Enregistrer du texte de zone de texte enrichi avec C#
Cette question a été répondue. J'ai amélioré un peu le code (du moins je le pense). Il rappelle maintenant de la aceepted réponse à la question Ouvrir le fichier dans la zone de texte enrichi avec C#. Si je n'ai pas fait d'erreur (que j'ai peut-être), le code devrait enregistrer un fichier avec le texte de la zone de texte enrichi 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 (du moins je le pense). La principale différence est que, maintenant, vous avez plus de contrôle sur l'encodage du fichier. C'est le code que j'utilise actuellement:
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);
}
}
- Vous devez utiliser le
using
déclaration. - Selon msdn.microsoft.com/en-us/library/yh598w02(SV.80).aspx, "il est généralement préférable de libérer des ressources limitées comme les handles de fichiers et les connexions de réseau aussi rapidement que possible" et de "l'instruction à l'aide permet au programmeur de spécifier lorsque les objets qui utilisent les ressources doivent les libérer". Est-ce la raison principale pour l'utilisation de l'instruction à l'aide?
- Yup, c'est vieux, mais votre code m'a aidé
Vous devez vous connecter pour publier un commentaire.
Comme ceci:
if (dlgSave.ShowDialog() == DialogResult.OK)
et enlever le reste de la méthode, puis apprendre le C#.Ici votre code sauve .doc fichiers formatés. Lorsque je l'utilise pour enregistrer .docx fichiers qu'il n'sauver mais lorsque j'essaie d'ouvrir le fichier enregistré à l'aide de Microsoft Word, Un message d'erreur est affiché.