Добрый день. Помогите понять, как заполнить combobox с условием. Есть список авторов книг. Пушкин, Толстой, Грибоедов и так далее. Они помещаются в combobox1. Есть список произведении у Пушкина 2-3 произведения, у Толстого и так далее. Количество произведении помещается в combobox2. К примеру в combobox1 я выбираю Пушкина а в combobox2 уже список только его произведении. И так далее с остальными писателями. В одном combobox авторы а в другом их книги. И возможно ли произвести чтение содержимого для combobox 1-2 из одного файла?
Можно обойтись без БД. Для этого надо создать класс Author, в котором будет имя и фамилия автора, а также все его книги. И класс Book, в котором будет хранится название книги.
Класс Author
public class Author
{
private List<Book> books;
public Author()
{
books = new List<Book>();
}
public string Name { get; set; }
public string Surname { get; set; }
public void AddBook(Book book)
{
books.Add(book);
}
public List<Book> GetBooks()
{
return books;
}
public override string ToString()
{
return string.Format("{0} {1}", Name, Surname);
}
}
Класс Book
public class Book
{
public string Title { get; set; }
public override string ToString()
{
return Title;
}
}
После этого надо будет создать List (или любой другой контейнер) с глобальной областью видимости.
При чтении из файла, необходимо будет создать объект класса Author и добавить в него все книги автора (объекты класса Book), после добавить в List, созданный ранее. [authors - List с глобальной областью видимости, в котором хранятся все авторы+их книги]
Пример
Author a1 = new Author { Name = "A.", Surname = "Пушкин" };
a1.AddBook(new Book { Title = "Руслан и Людмила" });
a1.AddBook(new Book { Title = "Евгений Онегин" });
authors.Add(a1);
К combobox1 добавить событие SelectedIndexChanged, в котором будет происходить получение индекса из combobox1 и вывод всех книг автора в combobox2.
Код для события SelectedIndexChanged
int index = comboBox1.SelectedIndex;
if (index < 0 && index >= authors.Count) return; //проверка, чтобы индекс не находился за границами массива
comboBox2.Items.Clear(); //очистка combobox2, чтобы не было книг других авторов
foreach(Book b in authors[index].GetBooks())
{
comboBox2.Items.Add(b);
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей