Enregistrer le texte de riche zone de texte avec C #
-
04-10-2019 - |
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);
}
}
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é.