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