Текстовый редактор, над которым я работаю, правильно сохраняет свое содержимое при сохранении в формате RTF. Однако, если я сохраню в (обычный) txt, html, dvc и другие (простые) основанные на txt форматы, все параграфы пропадут. Например:
Это первый абзац
Это второй абзац
Это третий абзац
становится:
Это первый абзац. Это второй абзац. Это третий абзац.
Если я использую SendKeys и System.Diagnostics.Process.Start для отправки содержимого RichTextBox в Блокнот, абзацы сохраняются.
Таким образом, проблема заключается в сохранении / сохранении как кода меню. Я добавляю код меню Сохранить как.
private void SaveAsToolStripMenuItem_Click(object sender, System.EventArgs e)
{
try
{
SaveFileDialog1.Title = "RTE - Save File";
SaveFileDialog1.DefaultExt = "rtf";
SaveFileDialog1.Filter = "Rich Text Files|*.rtf|Text Files|*.txt|XML Files|*.xml|INI Files|*.ini|DVC Files|*.dvc|CSV Files |*.csv |CS Files |*.cs |HTML Files|*.html|HTML Files|*.htm|All Files|*.*";
SaveFileDialog1.FilterIndex = 1;
if (SaveFileDialog1.ShowDialog() == DialogResult.OK)
{
if (SaveFileDialog1.FileName == "")
{
return;
}
string strExt;
strExt = System.IO.Path.GetExtension(SaveFileDialog1.FileName);
strExt = strExt.ToUpper();
if (strExt == ".RTF")
{
rtbDoc.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.RichText);
}
else
{
System.IO.StreamWriter txtWriter;
txtWriter = new System.IO.StreamWriter(SaveFileDialog1.FileName);
txtWriter.Write(rtbDoc.Text);
txtWriter.Close();
txtWriter = null;
rtbDoc.SelectionStart = 0;
rtbDoc.SelectionLength = 0;
}
currentFile = SaveFileDialog1.FileName;
rtbDoc.Modified = false;
this.Text = "Editor: " + currentFile.ToString();
MessageBox.Show(currentFile.ToString() + " saved.", "File Save");
}
else
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "Error");
}
}
private void ExitToolStripMenuItem_Click(object sender, System.EventArgs e)
{
try
{
if (rtbDoc.Modified == true)
{
System.Windows.Forms.DialogResult answer;
answer = MessageBox.Show("Save file?", "Document not saved", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (answer == System.Windows.Forms.DialogResult.Cancel)
{
return;
}
else if (answer == System.Windows.Forms.DialogResult.Yes)
{
return;
}
else
{
rtbDoc.Modified = false;
Application.Exit();
}
}
else
{
rtbDoc.Modified = false;
Application.Exit();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "Error");
}
}