Чтение из нескольких текстовых файлов, массивы отображаются в списке и метках - PullRequest
0 голосов
/ 11 июня 2011

Привет У меня есть программа, которая:

1 - пользователь должен сначала выбрать элемент из ComboBox.

. После выбора текстовый файл открывается в фоновом режиме и егосодержимое, добавленное к ListBox.

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
    switch (comboBox2.SelectedIndex)
    {
        case 0:
            listBox3.Items.Clear();
            FileInfo file0 = new FileInfo("C:\\hardwaremaintenance.txt");
            StreamReader stRead0 =file0.OpenText();
            while (!stRead0.EndOfStream)
            {                
                listBox3.Items.Add(stRead0.ReadLine());
            }
            break;
        case 1:
            listBox3.Items.Clear();
            FileInfo file1 = new FileInfo("C:\\NetworkManagement.txt");
            StreamReader stRead1 =file1.OpenText();
            while (!stRead1.EndOfStream)
            {                
                listBox3.Items.Add(stRead1.ReadLine());
            }
            break;
        case 2:
            listBox3.Items.Clear();
            FileInfo file2 = new FileInfo("C:\\Software.txt");
            StreamReader stRead2 =file2.OpenText();
            while (!stRead2.EndOfStream)
            {                
                listBox3.Items.Add(stRead2.ReadLine());
            }
            break;
        case 3:
            listBox3.Items.Clear();
            FileInfo file3 = new FileInfo("C:\\SyriatelApplications.txt");
            StreamReader stRead3 =file3.OpenText();
            while (!stRead3.EndOfStream)
            {                
                listBox3.Items.Add(stRead3.ReadLine());
            }
            break;
        case 4:
            listBox3.Items.Clear();
            FileInfo file4 = new FileInfo("C:\\NewHardwareRequest.txt");
            StreamReader stRead4 =file4.OpenText();
            while (!stRead4.EndOfStream)
            {                
                listBox3.Items.Add(stRead4.ReadLine());
            }
            break;
    }
}

2-пользователь выбирает элемент из (недавно) добавленных элементов в списке (из шага 1) и после этого действия он снова открывает новый текстовый файл, гдеон заполнен текстом этого формата, где «|» - это символ разделения

private void listBox3_SelectedIndexChanged(object sender, EventArgs e)
{
    int itemsCount = listBox3.Items.Count;
    string[] items = new string[itemsCount];

    for (int i = 0; i < itemsCount; i++)
        items[i] = listBox3.Items[i].ToString();

И мой мозг внезапно застрял здесь.

Следующим шагом должен был стать каждыйэлемент в ListBox и связать его со строкой из последнего открытого файла. ГДЕ выбран элемент == первое слово в любой из строк.

Что я не знаю, как это сделать:

  1. Когда и как открыть новый файл, прочитать каждую строку и поместить каждый элемент в массив (отделяя строки друг от друга).
  2. Как сравнить выбранный элемент изListBox с первым словом в любой строке во втором файле.

И если они совпадают, я хочу использовать оставшуюся информацию в строке для заполнения меток и текстовых полей.

Интерфейс программы следующий

Мне очень жаль, если я вас запутал, но я не настолько опытен в программировании

1 Ответ

2 голосов
/ 11 июня 2011

Несколько советов для начала:

  • не используйте элементы управления (listBox3) в качестве хранилищ данных.Вместо этого добавьте string[] items в ваш класс.
  • , когда у вас есть повторный код, как в вашем switch() использовании Refactor | Извлечь метод
  • Текстовые файлы можно читатьнамного лучше и проще с System.IO.File.ReadAllLines(fileName)
  • Если вы хотите найти слово (str=listbox3.SelectedItem) в другом файле, используйте lines[i].Contains(str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...