2013-04-14 3 views
1

Я пытался что-то новое, в основном я наткнулся на это: http://www.homeandlearn.co.uk/csharp/csharp_s4p11.htmlСохранение нескольких richtextboxes с помощью

Моя форма имеет сохранить в качестве опции, а также несколько вкладок. Я хотел бы сохранить все richtextboxes в текстовый файл. Но когда я добавляю более одного 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? и как можно сохранить все их в текстовый файл?

+2

вы переопределяете файл каждый раз, когда вы вызываете SaveFile. – Star

ответ

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 просто изменить новую строку (т.е. \ п) в пространстве, как один ниже:

allrtb.AppendText(richTextBox1.Text + " " + richTextBox2.Text + " " + richTextBox3.Text+ " " + richTextBox53.Text); 
+0

Как бы это использовать, чтобы добавить новую строку для каждого richTextBox – Burgo855

+0

, первый добавляет новый код, а именно: allrtb.AppendText (richTextBox1.Text + "\ n" + richTextBox2.Text + "\ n" + richTextBox3.Text + " \ n "+ richTextBox53.Text); – Edper

+0

Извините, не обратил на это полного внимания ... Это именно то, что я получил после благодарности. – Burgo855

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(); 
+0

Как я могу использовать это, чтобы также включить доступные .filetypes? – Burgo855

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); 
}