Visual C# - 将文本框的内容写入.txt文件

时间:2010-07-08 20:04:07

标签: c# textbox

我正在尝试使用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: 

其次只是文本框中实际内容的一小部分,以“...”结尾。为什么不写文本框的全部内容?

5 个答案:

答案 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);
    }
}