Visual С# - написать содержимое TextBox на a.txt файл
Я пытаюсь сохранить содержимое текстового поля в текстовый файл с помощью 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);
}
}
но я получаю только следующую строку текста в textfile:
System.Windows.Forms.TextBox, Text:
затем следует только короткая часть того, что было на самом деле в текстовом поле, заканчивалось на '...'. Почему он не записывает все содержимое текстового поля?
4 ответов
в этом случае использование 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);
если ты не скажешь '.Текст ' вот что вы получите
надеюсь, что это поможет!
параметры:
При использовании WriteLine()
обратите внимание, что контент сохранен в файл текст в TextBox, плюс перевод строки. Таким образом, содержимое файла не будет точно соответствовать содержимому текстового поля. Когда это тебя волнует? Если вы используете файл для чтения в текстовом свойстве текстового поля позже, и перейдите через save->load->save->load...
ваш выбор, чтобы сохранить весь текст (если вы using System.IO
):
если вы настаиваете на использовании TextWriter, вы можете использовать using
обертка для обработки удаления потока, если вам нужно использовать сложную логику в вашем методе записи.
using( TextWriter tw = new ... )
{
tw.Write( textBox.Text );
}
считайте, что IOExceptions может быть брошен при попытке доступа к файлу для чтения или записи. Рассмотрите возможность захвата IOException и обработки его в приложении (сохраняя текст, показывая пользователю, что текст не может быть сохранен, предложите выбрать другой файл и т. д.).