0

Richtextboxからテキストファイルにファイルを保存するのに問題があります。

私のrichtextboxは次のようになります。

ABC    ...
 SDE   ...
KLO    ...

保存した後は次のようになります。

ABC ... SDE ... KLO ...

しかし、私は行の後にリッチテキストボックスのような同じものが欲しいです。私は何を間違えましたか?

 if (saveFileDialog2.ShowDialog() == DialogResult.OK)
        {
            StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
            sw.WriteLine(richTextBox1.Text);
            sw.Flush();
            sw.Close();

            //File.WriteAllText(saveFileDialog2.FileName, str);
        }
4

3 に答える 3

8

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

StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
sw.WriteLine(richTextBox1.Text);
sw.Flush();
sw.Close();

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

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

別の解決策


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

RichTextBox.SaveFile(string path, RichTextBoxStreamType);

コード内のどこpathを表しsaveFileDialog2.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-11-06T13:10:10.483 に答える
3

私はこの質問がかなり古いことを知っていますが、これは将来この問題に遭遇するかもしれない人々のための代替コードです

File.WriteAllLines(saveFileDialog1.FileName, richTextBox1.Lines);

于 2013-03-11T06:23:37.437 に答える
0
if (saveFileDialog2.ShowDialog() == DialogResult.OK)
{
    StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
    foreach(String s in richTextBox1.Lines)
    {
        sw.WriteLine(s);
    }
    sw.Flush();
    sw.Close();
}
于 2012-11-06T13:01:28.590 に答える