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)
{
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);
}
}
but I only get the following line of text in the textfile:
System.Windows.Forms.TextBox, Text:
Followed by only a short portion of what was actually in the textbox, ended with '...'. Why doesn't it write the entire contents of the textbox?
I think what you need is:
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.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.
is simpler. You'd use TextWriter for a file you need to keep open for a longer period of time.
small explanation:
tw.WriteLine
acceptsobject
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 ofTextBox