【问题标题】:Save richTextBox content to .txt file on c#将richTextBox内容保存到c#上的.txt文件
【发布时间】:2015-12-01 13:05:00
【问题描述】:

当你编写这段代码时:

    string path = @"c:\temp\MyTest.txt";
    // This text is added only once to the file.
    if (!File.Exists(path))
    {
        // Create a file to write to.
        string[] createText = { "Hello", "And", "Welcome" };
        File.WriteAllLines(path, createText);
    }

现在我想将每一行 RichTextBox 内容保存到新的 .txt 文件行,如结果图像。 我写我的代码如下:

private void button1_Click(object sender, EventArgs e)
{
     richTextBox1.AppendText(textBox1.Text +"\n");
     System.IO.File.WriteAllText(@"C:\Users\Mohammad_Taghi\Desktop\ab\a.txt", richTextBox1.Text + Environment.NewLine);            
}

但是,结果是

【问题讨论】:

  • 尝试 Environment.NewLine 而不是 "\n"
  • 我编辑了上面的代码,但没有想要的答案。
  • @DanielCasserly 因为它不是 appendAllText 而是 WriteAllText Environment.NewLine 不会带来太多,因为他仍然必须用 Environment.NewLine 替换所有 \n 而不仅仅是在最后添加它。
  • @Thomas 很好 - 我需要花更长时间阅读这些问题。

标签: c# winforms richtextbox


【解决方案1】:

问题在于文本输入和文本文件所需的输入之间的转换。一种可能性如下:

private void button1_Click(object sender, EventArgs e)
{
     richTextBox1.AppendText(textBox1.Text);
     System.IO.File.WriteAllText(@"C:\Users\Mohammad_Taghi\Desktop\ab\a.txt", richTextBox1.Text.Replace("\n", Environment.NewLine));            
}

问题不仅是特定于文本框的,还可能是特定于操作系统的(例如,如果您读取在 linux 系统上创建的文件,......)。 一些系统只使用 \n 作为换行符,而另一些系统则使用 \r\n。 C#。通常,您必须注意手动使用正确的变体。

但是 c# 在 Environment.NewLine 的形式中有一个很好的解决方法,其中包含当前系统的正确变体。

【讨论】:

    【解决方案2】:

    由于某种原因,RichTextBox 控件包含用于换行的“\n”而不是“\r\n”。

    试试这个:

    System.IO.File.WriteAllText(
        @"C:\Users\Mohammad_Taghi\Desktop\ab\a.txt",
        richTextBox1.Text.Replace("\n", Environment.NewLine));
    

    更好的方法是使用richTextBox1.Lines,它是一个包含所有行的字符串数组:

    System.IO.File.WriteAllLines(
        @"C:\Users\Mohammad_Taghi\Desktop\ab\a.txt",
        richTextBox1.Lines);
    

    为了完整起见,这里还有另一种方式:

    richTextBox1.SaveFile(@"C:\Users\Mohammad_Taghi\Desktop\ab\a.txt",
        RichTextBoxStreamType.PlainText); //This will remove any formatting
    

    【讨论】:

    • 刚刚看到你的答案后我放下了。 +1 不知道 .Lines 到目前为止。好主意 WriteAllLines 应该处理那里的“\n”转换问题,因为它会自动使用正确的输入类型!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多