I\'m trying to save the contents of a textbox to a text file using Visual C#. I use the following code:
private void savelog_Click(object sender, EventArgs e
This can be used to prompt for any file name.
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);
}
}
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);
}
}
small explanation: tw.WriteLine
accepts object
so it doesn't care what do you pass. Internally it calls .ToString
. If .ToString
is not overriden it just returns type's name. .Text
is property with contents of TextBox
I think what you need is:
tw.WriteLine(logfiletextbox.Text);
if you don't say '.Text' that's what you get
Hope that helps!
Options:
When using WriteLine()
, note that the content saved to the file is the Text of the TextBox, plus a newline. So, the contents of the file will not match exactly the contents of the TextBox. When would you care about this? If you use the file to read back in a Text property of a text box later, and go through the save->load->save->load...
Your choices to preserve all text (if you using System.IO
):
File.WriteAllText( filename, textBox.Text )
File.WriteAllLines( filename, textBox.Lines )
If you insist on using TextWriter, you could use the using
wrapper to handle disposing of the Stream, if you need to use complex logic in your write method.
using( TextWriter tw = new ... )
{
tw.Write( textBox.Text );
}
Consider that IOExceptions may be thrown whenever attempting to access a file for reading or writing. Consider catching an IOException and handling it in your application (keeping the text, displaying to the user that the text could not be saved, suggest choosing a different file, etc).
Using the TextWriter isn't really necessary in this case.
File.WriteAllText(filename, logfiletextbox.Text)
is simpler. You'd use TextWriter for a file you need to keep open for a longer period of time.