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:
テキストボックスに実際にあったもののほんの一部が続き、「...」で終わります。テキストボックスの内容全体を書き込まないのはなぜですか?
この場合、TextWriterを使用する必要はありません。
File.WriteAllText(filename, logfiletextbox.Text)
簡単です。長期間開いたままにする必要があるファイルには、TextWriterを使用します。
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.WriteLine
はobject
を受け入れるので、何を渡してもかまいません。内部的には.ToString
を呼び出します。 .ToString
がオーバーライドされていない場合は、タイプの名前を返すだけです。 .Text
はTextBox
の内容を持つプロパティです
私はあなたが必要なものは次のとおりだと思います:
tw.WriteLine(logfiletextbox.Text);
'.Text'と言わないと、それが得られます
お役に立てば幸いです。
オプション: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をキャッチし、アプリケーションで処理することを検討してください(テキストを保持する、テキストを保存できなかったことをユーザーに表示する、別のファイルを選択することを提案するなど)。