web-dev-qa-db-ja.com

Visual C#-テキストボックスの内容を.txtファイルに書き込む

Visual C#を使用して、テキストボックスの内容をテキストファイルに保存しようとしています。私は次のコードを使用します:

private void savelog_Click(object sender, EventArgs e)
    {
        if (folderBrowserDialog3save.ShowDialog() == DialogResult.OK)
        {
            // create a writer and open the file
            TextWriter tw = new StreamWriter(folderBrowserDialog3save.SelectedPath + "logfile1.txt");
            // write a line of text to the file
            tw.WriteLine(logfiletextbox);
            // close the stream
            tw.Close();
            MessageBox.Show("Saved to " + folderBrowserDialog3save.SelectedPath + "\\logfile.txt", "Saved Log File", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }

しかし、テキストファイルには次のテキスト行しかありません。

System.Windows.Forms.TextBox, Text: 

テキストボックスに実際にあったもののほんの一部が続き、「...」で終わります。テキストボックスの内容全体を書き込まないのはなぜですか?

10
muttley91

この場合、TextWriterを使用する必要はありません。

File.WriteAllText(filename, logfiletextbox.Text) 

簡単です。長期間開いたままにする必要があるファイルには、TextWriterを使用します。

23
Ed Ropple
private void savelog_Click(object sender, EventArgs e)
    {
        if (folderBrowserDialog3save.ShowDialog() == DialogResult.OK)
        {
            // create a writer and open the file
            TextWriter tw = new StreamWriter(folderBrowserDialog3save.SelectedPath + "logfile1.txt");
            // write a line of text to the file
            tw.WriteLine(logfiletextbox.Text);
            // close the stream
            tw.Close();
            MessageBox.Show("Saved to " + folderBrowserDialog3save.SelectedPath + "\\logfile.txt", "Saved Log File", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }

簡単な説明:tw.WriteLineobjectを受け入れるので、何を渡してもかまいません。内部的には.ToStringを呼び出します。 .ToStringがオーバーライドされていない場合は、タイプの名前を返すだけです。 .TextTextBoxの内容を持つプロパティです

9
Andrey

私はあなたが必要なものは次のとおりだと思います:

tw.WriteLine(logfiletextbox.Text);

'.Text'と言わないと、それが得られます

お役に立てば幸いです。

7
Brett

オプション:WriteLine()を使用する場合、ファイルに保存されるコンテンツはTextBoxのテキストと改行であることに注意してください。そのため、ファイルの内容はTextBoxの内容と正確には一致しません。いつこれを気にしますか?ファイルを使用して後でテキストボックスのTextプロパティを読み戻し、[保存]-> [ロード]-> [保存]-> [ロード...]を実行する場合。

すべてのテキストを保持するための選択(using System.IO):

ファイル. WriteAllText (ファイル名、textBox.Text)

File . WriteAllLines (filename、textBox . Lines

TextWriterの使用を主張する場合、writeメソッドで複雑なロジックを使用する必要がある場合は、usingラッパーを使用してStreamの破棄を処理できます。

using( TextWriter tw = new ... )
{
    tw.Write( textBox.Text );
}

読み取りまたは書き込みのためにファイルにアクセスしようとすると、IOExceptionがスローされる可能性があることを考慮してください。 IOExceptionをキャッチし、アプリケーションで処理することを検討してください(テキストを保持する、テキストを保存できなかったことをユーザーに表示する、別のファイルを選択することを提案するなど)。

2
maxwellb