Question

Cette question a été répondue. Je me suis amélioré le bit d'un code (je pense du moins). Il rappelle maintenant la réponse à la question aceepted Ouvrir le fichier dans la riche zone de texte avec C # . Si je ne l'ai pas fait d'erreur (que je peux avoir), le code devrait enregistrer un fichier avec le texte de la zone de texte riche rtfMain. L'extension de fichier par défaut est txt. Vous pouvez également utiliser l'extension de fichier .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)
{
}

Mise à jour: J'ai amélioré le code encore plus loin (je pense du moins). La principale différence est que vous avez maintenant plus de contrôle sur l'encodage du fichier. Voici le code que je utilise en ce moment:

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);
  } 
}
Était-ce utile?

La solution

Comme ceci:

 rtfMain.SaveFile(dlgSave.FileName);

Autres conseils

Votre code ici enregistre les fichiers au format .doc. Quand je l'utilise pour enregistrer des fichiers .docx, il ne sauve mais lorsque je tente d'ouvrir le fichier enregistré en utilisant Microsoft Word, un message d'erreur est affiché.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top