Speichern Sie den text von rich-text-Feld mit C#

Diese Frage beantwortet wurde. Ich habe verbessert den code ein wenig (zumindest denke ich so). Es erinnert mittlerweile von der aceepted Antwort auf die Frage Öffnen Sie die Datei im rich-text-Feld mit C#. Wenn ich nicht einen Fehler machte (was ich kann), sollte der code eine Datei speichern, mit text aus dem Feld für rich-text rtfMain. Die Standard-Datei-Erweiterung ist .txt. Sie können auch die Datei-Erweiterung .rtf.

private void menuFileSave_Click(object sender, EventArgs e) 
{ 
//Create a new SaveFileDialog object 
using (SaveFileDialog dlgSave = new SaveFileDialog())
  try
  {
    //Default file extension
    dlgSave.DefaultExt = "txt"; 
    //SaveFileDialog title
    dlgSave.Title = "Save File As";
    //Available file extensions
    dlgSave.Filter = "Text Files (*.txt)|*.txt|RTF Files (*.rtf)|*.rtf"; 
    //Show SaveFileDialog box and save file
    if (dlgSave.ShowDialog() == DialogResult.OK) 
    { 
      //Save as .txt file
      if (Path.GetExtension(dlgSave.FileName) == ".txt")
      {
        rtfMain.SaveFile(dlgSave.FileName, RichTextBoxStreamType.PlainText);
      }
      //Save as .rtf file
      if (Path.GetExtension(dlgSave.FileName) == ".rtf")
      {
        rtfMain.SaveFile(dlgSave.FileName, RichTextBoxStreamType.PlainText);
      }
    }
    catch (Exception errorMsg)
    {
      MessageBox.Show(errorMsg.Message);
    }
  }
}
private void rtfMain_TextChanged(object sender, EventArgs e)
{
}

Update: ich habe verbessert den code noch weiter (zumindest denke ich so). Der wesentliche Unterschied ist, dass Sie nun mehr Kontrolle über die Datei-Codierung. Dies ist der code, den ich verwende jetzt:

private void fileSave_Click(object sender, EventArgs e)
{
  //Text from the rich textbox rtfMain
  string str = rtfMain.Text;
  //Create a new SaveFileDialog object
  using (SaveFileDialog dlgSave = new SaveFileDialog())
  try
  {
    //Available file extensions
    dlgSave.Filter = "All Files (*.*)|*.*";
    //SaveFileDialog title
    dlgSave.Title = "Save";
    //Show SaveFileDialog
    if (dlgSave.ShowDialog() == DialogResult.OK && dlgSave.FileName.Length > 0)
    {
      //Save file as utf8 without byte order mark (BOM)
      //ref: http://msdn.microsoft.com/en-us/library/s064f8w2.aspx
      UTF8Encoding utf8 = new UTF8Encoding();
      StreamWriter sw = new StreamWriter(dlgSave.FileName, false, utf8);
      sw.Write(str);
      sw.Close();
    }
  }
  catch (Exception errorMsg)
  {
    MessageBox.Show(errorMsg.Message);
  } 
}
  • Sollten Sie die using - Anweisung.
  • Nach msdn.microsoft.com/en-us/library/yh598w02(VS.80).aspx, "es ist normalerweise am besten, release begrenzte Ressourcen wie Dateihandles und Netzwerkverbindungen so schnell wie möglich" und "die using-Anweisung erlaubt es dem Programmierer, um anzugeben, Wann Objekte, die die Ressourcen nutzen, sollten Sie befreien". Ist dies der Hauptgrund für die Verwendung der using-Anweisung?
  • Ja, das ist alt, aber dein code hat mir geholfen
Schreibe einen Kommentar