Связанные текстовые файлы - Visual Basic .NET
Формулировка задачи:
Всем привет!!! Такая задача:
VB2008
На форме 2 ЛБ, в ресурсах 2 текстовых файла: В одном список писателей, в другом писатели с их произведениями. Файлы делаю в массивы. Массив писателей в ЛБ1. При выборе писателя необходимо в ЛБ2 записать их произведения. Делаю так:
если выбранный в ЛБ1 совпадает с элементом массива произведений, то вывести начиная со следующей строки до пустой строки (в массиве произведений писатель и произведения идут подряд, а следующий через пустую строку)
Ругается на этот алгоритм. Может есть как-то проще и современней способ??? Подскажите плиз!!!
Файлы:
писатели:
Лермонтов
Пушкин
Толстой
Чехов
Достоевский
произведения:
Лермонтов
Мцыри
Корсар
Герой Н В
Пушкин
Руслан
Рыбка
Салтан
Онегин
Толстой
Война и мир
Анна
Дество
Чехов
Дама
Ваня
3 Сестры
Сад
Чайка
Достоевский
Прест
Карамазовы
Решение задачи: «Связанные текстовые файлы»
textual
Листинг программы
Public Class Form1
Dim Authors As List(Of Author) 'Коллекция всех авторов и их книг
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim OFD As New OpenFileDialog
If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
LoadFile(OFD.FileName)
ListBox1.Items.Clear()
ListBox2.Items.Clear()
For Each avt As Author In Authors
ListBox1.Items.Add(avt.Name) 'Заполняем наш ListBox1 именами авторов из сформированной коллекции
Next
End If
End Sub
Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
For Each Avt As Author In Authors
If Avt.Name = sender.SelectedItem Then
ListBox2.Items.Clear()
ListBox2.Items.AddRange(Avt.Books.ToArray) 'Показываем все книги выбранного автора
End If
Next
End Sub
Public Sub LoadFile(FileName As String)
Authors = New List(Of Author) 'Создаем новую коллекцию всех авторов и их книг
For Each Line As String In IO.File.ReadAllLines(FileName, System.Text.Encoding.Default)
If Not String.IsNullOrWhiteSpace(Line) Then
Dim a As New Author 'Создаем новый класс автора
a.Name = Line.Split("=")(0) 'Даем ему имя
a.Books.AddRange(Line.Split("=")(1).Split(";")) 'Запоминаем его книжки
Authors.Add(a) 'Добавляем нового автора в коллекцию
End If
Next
End Sub
Public Class Author
Public Property Name As String
Public Property Books As New List(Of String)
End Class
End Class