Связанные текстовые файлы - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д