2014-04-02 3 views
1

Я пытаюсь написать программу для меня, должно быть намного проще, чем это доказывает.
У меня есть форма с текстовыми полями, которая просит пользователя ввести свои данные, например. Имя, адрес и т. Д. Я пытаюсь сохранить данные из текстовых полей в файл .txt, когда пользователь нажимает кнопку сохранения.Сохранение данных из текстовых полей в текстовый файл

Я могу создать файл, но данные не будут сохранены в файле. Я разместил свой код ниже, и любая помощь, которую вы можете получить, будет очень благодарна.

private void btnSave_Click(object sender, EventArgs e) 
{ 
    string file_name = "e:\\test1.txt"; 

    System.IO.StreamWriter objWriter; 
    objWriter = new System.IO.StreamWriter(file_name, true); 

    objWriter.Write(txtName.Text); 
    objWriter.Write(txtAddress.Text); 
    objWriter.Write(txtEmail.Text); 
    objWriter.Write(txtPhone.Text); 

    MessageBox.Show("Details have been saved"); 
} 

ответ

0

Было бы целесообразнее использовать using в начале строки кода, где присутствует StreamWriter. Это необходимо для того, чтобы данные были Disposed, вам понадобится это, чтобы разблокировать данные из потока.

При написании данных:

using (StreamWriter objWriter = new StreamWriter("test1.txt")) 
{ 
    objWriter.Write(txtName.Text); 
    objWriter.Write(txtAddress.Text); 
    objWriter.Write(txtEmail.Text); 
    objWriter.Write(txtPhone.Text); 

    MessageBox.Show("Details have been saved"); 
} 

При чтении сохраненных данных, давайте использовать ListBox просто иметь пример:

foreach (var line in File.ReadAllLines("test1.txt")) 
{ 
    listBox1.Items.Add(line); 
} 

Надеется, что это помогает!

+0

Спасибо за помощь, ваш код для чтения данных работает для меня. – PMCL88

+0

без проблем мой друг. возможно, вы можете принять мой ответ, чтобы этот поток можно было пометить как разрешенный. благодаря! – Francis

0

Вызов StreamWriter.Flush метод после того, как вы сделали:

objWriter.Flush(); 

Очищает все буферы для текущего автора и вызывает какие-либо буферизованные данные должны быть записаны в основной поток.

Вы также можете сделать это, используя File.WriteAllText метод:

var line = string.Join(" ", txtName.Text, txtAddress.Text, txtEmail.Text,txtPhone.Text); 
File.WriteAllText(file_name, line); 
0

Это хорошая практика, чтобы обернуть локальные переменные, реализующие IDisposable в using заявление:

using (StreamWriter objWriter = new StreamWriter(file_name, true)) 
{ 
    objWriter.Write(txtName.Text); 
    objWriter.Write(txtAddress.Text); 
    objWriter.Write(txtEmail.Text); 
    objWriter.Write(txtPhone.Text); 
} 

Это также имеет положительный побочный эффект: поток сбрасывается и закрывается сразу после выполнения инструкции using.

Предложение: Рассмотрите возможность использования WriteLine вместо Write, потому что, возможно, вам нужен разделитель между строковыми значениями.

+0

Спасибо за быстрый ответ. Я решил написать WriteLine вместо записи. – PMCL88

+0

Если ваша проблема решена, вы должны выбрать ответ и пометить его как принятый. – Dmitry

Смежные вопросы