Связанные текстовые файлы - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Всем привет!!! Такая задача: VB2008 На форме 2 ЛБ, в ресурсах 2 текстовых файла: В одном список писателей, в другом писатели с их произведениями. Файлы делаю в массивы. Массив писателей в ЛБ1. При выборе писателя необходимо в ЛБ2 записать их произведения. Делаю так:
Листинг программы
  1. lb1.Items.AddRange(avt) - массив писателей загнал в ЛБ1
  2. Dim s As String = lb1.SelectedItem
  3. For i = 0 To pro.length - 1
  4. If s = pro(i) Then
  5. k = i + 1
  6. While pro(k) <> ""
  7. lb2.Items.Add(pro(k))
  8. k += 1
  9. End While
  10. End If
  11. Next
если выбранный в ЛБ1 совпадает с элементом массива произведений, то вывести начиная со следующей строки до пустой строки (в массиве произведений писатель и произведения идут подряд, а следующий через пустую строку) Ругается на этот алгоритм. Может есть как-то проще и современней способ??? Подскажите плиз!!! Файлы: писатели: Лермонтов Пушкин Толстой Чехов Достоевский произведения: Лермонтов Мцыри Корсар Герой Н В Пушкин Руслан Рыбка Салтан Онегин Толстой Война и мир Анна Дество Чехов Дама Ваня 3 Сестры Сад Чайка Достоевский Прест Карамазовы

Решение задачи: «Связанные текстовые файлы»

textual
Листинг программы
  1. Public Class Form1
  2.     Dim Authors As List(Of Author) 'Коллекция всех авторов и их книг
  3.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  4.         Dim OFD As New OpenFileDialog
  5.         If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
  6.             LoadFile(OFD.FileName)
  7.             ListBox1.Items.Clear()
  8.             ListBox2.Items.Clear()
  9.  
  10.             For Each avt As Author In Authors
  11.                 ListBox1.Items.Add(avt.Name) 'Заполняем наш ListBox1 именами авторов из сформированной коллекции
  12.             Next
  13.         End If
  14.     End Sub
  15.  
  16.     Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
  17.         For Each Avt As Author In Authors
  18.             If Avt.Name = sender.SelectedItem Then
  19.                 ListBox2.Items.Clear()
  20.                 ListBox2.Items.AddRange(Avt.Books.ToArray) 'Показываем все книги выбранного автора
  21.             End If
  22.         Next
  23.     End Sub
  24.  
  25.     Public Sub LoadFile(FileName As String)
  26.         Authors = New List(Of Author) 'Создаем новую коллекцию всех авторов и их книг
  27.         For Each Line As String In IO.File.ReadAllLines(FileName, System.Text.Encoding.Default)
  28.             If Not String.IsNullOrWhiteSpace(Line) Then
  29.                 Dim a As New Author 'Создаем новый класс автора
  30.                 a.Name = Line.Split("=")(0) 'Даем ему имя
  31.                 a.Books.AddRange(Line.Split("=")(1).Split(";")) 'Запоминаем его книжки
  32.                 Authors.Add(a) 'Добавляем нового автора в коллекцию
  33.             End If
  34.         Next
  35.     End Sub
  36.  
  37.     Public Class Author
  38.         Public Property Name As String
  39.         Public Property Books As New List(Of String)
  40.     End Class
  41. End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут