我正在尝试使用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:
其次只是文本框中实际内容的一小部分,以“...”结尾。为什么不写文本框的全部内容?
答案 0 :(得分:23)
在这种情况下,使用TextWriter并不是必需的。
File.WriteAllText(filename, logfiletextbox.Text)
更简单。您需要将TextWriter用于需要长时间保持打开状态的文件。
答案 1 :(得分:9)
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
答案 2 :(得分:7)
我认为你需要的是:
tw.WriteLine(logfiletextbox.Text);
如果你不说'.Text',那就是你得到的
希望有所帮助!
答案 3 :(得分:2)
选项:
使用WriteLine()
时,请注意保存到文件的内容是TextBox的文本,加上换行符。因此,文件的内容将与TextBox的内容完全不匹配。你什么时候关心这个?如果您稍后使用该文件在文本框的Text属性中回读,并通过save-> load-> save->加载......
您选择保留所有文字(如果using System.IO
):
文件。WriteAllText(文件名,textBox.Text)
文件。WriteAllLines(文件名,textBox。Lines)
如果你坚持使用TextWriter,你可以使用using
包装来处理Stream的处理,如果你需要在write方法中使用复杂的逻辑。
using( TextWriter tw = new ... )
{
tw.Write( textBox.Text );
}
考虑到尝试访问文件进行读写时可能会抛出IOExceptions。考虑捕获IOException并在应用程序中处理它(保留文本,向用户显示无法保存文本,建议选择其他文件等)。
答案 4 :(得分:0)
这可用于提示输入任何文件名。
private void savelog_Click(object sender, EventArgs e)
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "*.txt|*.txt";
dlg.RestoreDirectory = true;
if (dlg.ShowDialog() == DialogResult.OK)
{
File.WriteAllText(dlg.FileName, textBoxLog.Text);
}
}