1

シンプルなテキストエディター用のコードをC#で記述し、リッチテキストボックスコントロールを使用していますが、解決できない問題が見つかりました。問題は、テキストエディタでファイルを保存してから、Windowsのメモ帳を使用してファイルを再度開こうとすると、1行になります。これは例です。

これは、アプリから書き込んで保存するときです

ここに画像の説明を入力してください

保存してWindowsのメモ帳で開くと、次のようになります。 ここに画像の説明を入力してください

これがfieを保存するための私のコードです

try
{
    saveFileDialog1.ShowDialog();
    this.Text = file = toolStripTextBox1.Text = saveFileDialog1.FileName;
    isi = richTextBox1.Text;
    write = new System.IO.StreamWriter(file);
    write.WriteLine(isi);
    write.Close();
    toolStripStatusLabel2.Text = "Saved";
}
catch (Exception)
{
    toolStripStatusLabel2.Text = "Save cancelled by user";
}

あなたはそれを修正する方法を知っていますか?

4

2 に答える 2

2

richTextBox1.Text次のコードのみを使用して(テキスト全体を)1行で保存しようとしているため、おそらくこれが発生します

isi = richTextBox1.Text;
write = new System.IO.StreamWriter(file);
write.WriteLine(isi);
write.Close();

write.WriteLine()の特定の行番号で使用してrichTextBox1から、別の行に移動することをお勧めします。

 for (int i = 0; i < richTextBox1.Lines.Length; i++)
 {
      write.WriteLine(richTextBox1.Lines[i]);
 }
write.Close();

別の解決策


RichTextBox特定のエンコーディングでファイルを保存するための組み込み関数がすでにあります。RichTextBox.SaveFile()この目的で使用できます。

RichTextBox.SaveFile(string path, RichTextBoxStreamType);

パスsaveFileDialog1.FileNameがコード内で表す場所。の場合、色/フォント/保護/インデントなどのRTFを使用しない限り、RichTextBoxStreamType設定するのが最適です。RichTextBoxStreamType.PlainText

次に、次の方法を使用してファイルを再度読み取ることができます

RichTextBox.LoadFile(string path, RichTextBoxStreamType);

注意:ファイルがRTFになく、RTF(RichTextBox.LoadFile(string path, RichTextBoxStreamType.RichText);)で読み込もうとすると、フォーマットエラーが発生する場合があります。この場合、例外をキャッチして、プレーンまたはUnicodeエンコーディングでファイルを読み取る必要があります。

RichTextBox _RichTextBox = new RichTextBox();
try
{
     _RichTextBox.LoadFile(@"D:\Resources\text.txt", RichTextBoxStreamType.RichText);
}
catch (Exception EX)
{
     if (EX.Message.ToLower().Contains("format is not valid"))
     {
          _RichTextBox.LoadFile(@"D:\Resources\text.txt", RichTextBoxStreamType.PlainText);
     }
}

ありがとう、
これがお役に立てば幸いです:)

于 2012-10-27T03:24:04.423 に答える
0

richtextbox独自の保存メソッドを使用してRichTextBoxの内容をファイルに保存します。SaveFile(string, RichTextBoxStreamType);
これを参照できます: http: //msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.savefile%28VS .71%29.aspx

によってファイルのコンテンツをロードします。LoadFile(Stream, RichTextBoxStreamType);これを参照してください:http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.loadfile (v = vs.71).aspx

于 2012-10-27T03:14:44.440 に答える