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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie diese:
if (dlgSave.ShowDialog() == DialogResult.OK)
und entfernen Sie den rest der Methode, dann Lerne C#.Hier Ihren code spart .doc-Dateien formatiert. Wenn ich es verwenden, um zu speichern .docx-Dateien, die es speichert es, aber wenn ich versuche, öffnen Sie die gespeicherte Datei mit Microsoft Word, wird Eine Fehlermeldung angezeigt.