1

我一直在尝试新的东西,基本上我偶然发现了这个: http: //www.homeandlearn.co.uk/csharp/csharp_s4p11.html

我的表单有一个另存为选项以及多个选项卡。我想将所有的富文本框保存到文本文件中。但是当我添加多个richtextbox时,它只会保存底部的一个,所以我猜公式是错误的?

private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
    string Saved_File = "";

    saveFD.InitialDirectory = "C:";
    saveFD.Title = "Save your file as...";
    saveFD.FileName = "";
    saveFD.Filter = "Text (*.txt)|*.txt|All Files(*.*)|*.*";
    if (saveFD.ShowDialog() != DialogResult.Cancel)
    {
        Saved_File = saveFD.FileName;
        richTextBox1.SaveFile(Saved_File, RichTextBoxStreamType.PlainText);
        richTextBox2.SaveFile(Saved_File, RichTextBoxStreamType.PlainText);
        richTextBox3.SaveFile(Saved_File, RichTextBoxStreamType.PlainText);
        richTextBox53.SaveFile(Saved_File, RichTextBoxStreamType.PlainText);
    }
}

在上面的例子中它只会保存richTextBox53,为什么不保存上面所有的richTextBoxes?以及如何将它们全部保存到文本文件中?

4

3 回答 3

1

正如我在评论中所说,覆盖是 saveFile 函数中流的默认行为,
因此您需要指定文件模式。

System.IO.FileStream fs = 
                    new System.IO.FileStream(Saved_File,
                        System.IO.FileMode.OpenOrCreate,System.IO.FileAccess.ReadWrite);
    richTextBox1.SaveFile(fs, Saved_File);
        richTextBox2.SaveFile(fs, Saved_File);
        richTextBox3.SaveFile(fs, Saved_File);
        richTextBox53.SaveFile(fs, Saved_File);
fs.Close();
于 2013-04-14T01:36:21.157 回答
1
using (StreamWriter writer = File.AppendText(saveFD.FileName))
{
    richTextBox1.SaveFile(writer , RichTextBoxStreamType.PlainText);
    richTextBox2.SaveFile(writer , RichTextBoxStreamType.PlainText);
    richTextBox3.SaveFile(writer , RichTextBoxStreamType.PlainText);
    richTextBox53.SaveFile(writer , RichTextBoxStreamType.PlainText);
}
于 2013-04-14T02:37:21.120 回答
0

试试这个

        string Saved_File = "";

        saveFD.InitialDirectory = "C:";
        saveFD.Title = "Save your file as...";
        saveFD.FileName = "";
        saveFD.Filter = "Text (*.txt)|*.txt|All Files(*.*)|*.*";
        if (saveFD.ShowDialog() != DialogResult.Cancel)
        {
            Saved_File = saveFD.FileName;
            RichTextBox allrtb = new RichTextBox();
            // This one add new lines using the "\n" every time you add a rich text box
            allrtb.AppendText(richTextBox1.Text + "\n" + richTextBox2.Text + "\n" + richTextBox3.Text+ "\n" + richTextBox53.Text );
            allrtb.SaveFile(Saved_File, RichTextBoxStreamType.PlainText);
        }

现在,如果您想在 Richtextbox 之间留出空格,只需将新行(即 \n)更改为如下所示的空格:

allrtb.AppendText(richTextBox1.Text + " " + richTextBox2.Text + " " + richTextBox3.Text+ " " + richTextBox53.Text );
于 2013-04-14T01:40:57.233 回答