1

Тема: Як правильно зчитати файл

Допоможіть будь ласка. Зробила все, але залишилась одна проблема.

Працюю над таким завданням  "Заданий файл, що містить телефонні номери працівників установи.
Вказується прізвище працівника, його ініціали і номер телефону. Ввести
прізвище та ім'я з терміналу. Відшукати телефон за введеними даними" .

Створюю це все в віндовс форм. Створила всі кнопки, описала їх. З 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"));
            
           

        }
    }
}

2

Re: Як правильно зчитати файл

російська

employee e1 = list1[listBox1.SelectedIndex + 1];
+1 - тут  ...
----
Получает или задает индекс выделенной в настоящий момент позиции в элементе управления ListBox (индекс, начинающийся с нуля).
----
https://msdn.microsoft.com/ru-ru/librar … s.90).aspx
https://msdn.microsoft.com/ru-ru/librar … .110).aspx

0xDADA11C7: Попередження, наступного разу - бан.

3

Re: Як правильно зчитати файл

То треба, добавити скрізь +1? І не буде помилки?

4

Re: Як правильно зчитати файл

А як файл виглядає? Його вміст.

5

Re: Як правильно зчитати файл

1. +1 - це помилка. Нумерація починається з нуля.
2. приношу вибачення за російську. Але це текст скопійований із силок наведених нище.

6 Востаннє редагувалося ostap34PHP (13.05.2017 19:17:26)

Re: Як правильно зчитати файл

vasyliv написав:

2. приношу вибачення за російську. Але це текст скопійований із силок наведених нище.

"силок" :o
Українською ссилка буде посилання