4

RichTextBoxがあり、テキストをファイルに保存したいと思います。RichTextBoxの各行はCR+LF( "\ n \ r")で終わりますが、ファイルに保存すると、行の最後にLF文字しか含まれていません。

ファイルの代わりにコンテンツをクリップボードにコピーすると、すべてうまくいきます(クリップボードのコンテンツには、各行の終わりにCR + LFがあり、Notepad ++で貼り付けると表示されます)。txtClassはRichTextBoxです。

private void btnToClipboard_Click(object sender、EventArgs e){//必要に応じて機能しますClipboard.SetText(txtClass.Text); }

private void btnToFile_Click(object sender, EventArgs e)
{
    //Don't work as desired
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();             
    saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    saveFileDialog1.FilterIndex = 2;
    saveFileDialog1.RestoreDirectory = true;

    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        System.IO.StreamWriter SW = new System.IO.StreamWriter(saveFileDialog1.FileName, false, Encoding.ASCII);              
        SW.Write(txtClass.Text);            
        SW.Close();
    }

}

この瞬間、私も試してみました

SW.NewLine = "\r\n";
SW.Newline = Environment.NewLine

そして、すべてのEncondingの利用可能なもので。

SW.Write( "Line One \ r \ nLineTwo \ r \ nLineThree")を使用すると、正常に機能します。

ご協力いただきありがとうございます

4

3 に答える 3

3

コメントで正解をくれたPeterLindholmに感謝します。

RichTextBox自体にあるSaveFileメソッドを試しましたか? http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.savefile(VS.71).aspx

于 2009-07-20T15:22:35.263 に答える
1

同じ問題が発生しましたが、RichTextBoxとして保存したくありませんでした。メモ帳で簡単に読み取ったり編集したりできる標準の単純なtxtファイルです。

問題は、何らかの理由でStreamWriterクラスが\ nをファイルに書き込まないことです(理由はまだわかりません-そうなると思います):)

したがって、簡単な解決策は、手動で\nを\r \ nに置き換えることであり、期待どおりに完全に機能します。

以下のコードスニピットを参照してください。

if ((myStream = ScriptFileSaveDB.OpenFile()) != null)
{
    using (StreamWriter sr = new StreamWriter(myStream))
    {
        //Since \n (newlines) are not being written correctly as \r\n
        //Go thru Text and replace all "\n" with \r\n
        tempStr = ScriptProgramWindowRTB.Text;
        tempStr = tempStr.Replace("\n", "\r\n");
        sr.Write(tempStr);
    }
于 2014-03-01T18:21:13.560 に答える
0
private void btnToFile_Click(object sender, EventArgs e)
{
    //Don't work as desired
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    saveFileDialog1.FilterIndex = 2;
    saveFileDialog1.RestoreDirectory = true;

    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        System.IO.StreamWriter SW = new System.IO.StreamWriter(
            saveFileDialog1.FileName, false, Encoding.ASCII);
        SW.Write(txtClass.Text);
        SW.Close();
    }
}
于 2010-01-16T07:36:33.663 に答える