Тема: Як правильно зчитати файл
Допоможіть будь ласка. Зробила все, але залишилась одна проблема.
Працюю над таким завданням "Заданий файл, що містить телефонні номери працівників установи.
Вказується прізвище працівника, його ініціали і номер телефону. Ввести
прізвище та ім'я з терміналу. Відшукати телефон за введеними даними" .
Створюю це все в віндовс форм. Створила всі кнопки, описала їх. З textboxs записує в listbox. Але ось в чому проблема: записала в файл з listbox, виводить так само в listbox, але при нажимані на працівника певного вибиває помилку ("System.ArgumentOutOfRangeException: "Індекс за межами діапазону. Індекс повинен бути позитивним числом, а його розмір не повинен перевищувати розмір колекції."
"), і не записує назад в textboxs. Потрібно, щоб зчитувало і в listbox і в textbox, при цьому можна було б редагувати, додавати, видаляти елементи.
Проблема: не можу правильно зчитати з файлу.
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
using System.Text;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
List<employee> list1;
public Form1()
{
InitializeComponent();
list1 = new List<employee>();
}
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
employee e1 = new employee();
e1.surename = textBox1.Text;
e1.name = textBox2.Text;
e1.pobatushke = textBox3.Text;
e1.phone = textBox4.Text;
list1.Add(e1);
}
if (radioButton2.Checked)
{
employee e1 = list1[listBox1.SelectedIndex];
int index = listBox1.SelectedIndex;
list1.Remove(e1);
e1.surename = textBox1.Text;
e1.name = textBox2.Text;
e1.pobatushke = textBox3.Text;
e1.phone = textBox4.Text;
list1.Insert(index, e1);
}
if (radioButton3.Checked)
{
employee e1 = list1[listBox1.SelectedIndex];
list1.Remove(e1);
}
updatelist();
}
private void updatelist()
{
listBox1.Items.Clear();
foreach (var e in list1)
{
listBox1.Items.Add((e.surename + " " + e.name[0] + "." + e.pobatushke[0]));
}
}
private void tabPage1_Click(object sender, EventArgs e)
{ }
private void button2_Click(object sender, EventArgs e)
{
foreach (var ee in list1)
{
if (ee.surename == textBox5.Text && ee.name == textBox6.Text)
{
textBox7.Text = ee.phone;
}
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
employee e1 = list1[listBox1.SelectedIndex + 1];
textBox1.Text = e1.surename;
textBox2.Text = e1.name;
textBox3.Text = e1.pobatushke;
textBox4.Text = e1.phone;
}
private void label3_Click(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
FileStream file1 = new FileStream("D: \\ Працівники.txt", FileMode.Create); // створюємо файловий потік
StreamWriter writer = new StreamWriter(file1); // створюємо «потоковий письменник» і пов'язуємо його з файловим потоком
foreach (var item in listBox1.Items)
{
writer.WriteLine(item.ToString());
}
// записуємо у файл
writer.Close(); // закриваємо потік. Чи не закривши потік, у файл нічого не запишеться
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button4_Click(object sender, EventArgs e)
{
listBox1.Items.AddRange(File.ReadAllLines("D: \\ Працівники.txt"));
}
}
}