Основы программирования на C#


Два наследника формы TwoLists


Построим по указанной технологии двух наследников формы TwoLists. Дадим им имена: TwoLists_Strings и TwoLists_Books. Они будут отличаться тем, что первый из них будет заполнять левый список строками, а второй - "настоящими объектами" класса Book. Второй список при открытии форм будет оставаться пустым и служить для хранения выбора, сделанного пользователем. Оба наследника будут также задавать обработчики события Click для командных кнопок, завершающих работу с этими формами. На рис. 24.6 показана наследуемая форма, открытая в дизайнере форм.

Наследуемая форма, открытая в дизайнере

Рис. 24.6.  Наследуемая форма, открытая в дизайнере

Обратите внимание на значки, сопровождающие все наследуемые элементы управления. В классе TwoLists_Strings добавлены поля:

string[] source_items; string[] selected_items; const int max_items = 20;

В конструктор класса добавлен код, инициализирующий массивы:

source_items = new string[max_items]; selected_items = new string[max_items]; InitList1();

Вызываемый в конструкторе закрытый метод класса InitList заполняет массив source_items - источник данных - строками, а затем передает эти данные в левый список формы. По-хорошему, следовало бы организовать заполнение списка формы из базы данных, но я здесь выбрал самый примитивный способ:

void InitList1() { //задание элементов источника и инициализация списка формы source_items[0] ="Бертран Мейер: Методы программирования"; //аналогично заполняются другие элементы массива //перенос массива в список ListBox1 int i = 0; while (source_items[i] != null) { this.listBox1.Items.Add(source_items[i]); i++; } //this.listBox1.DataSource = source_items; }

Закомментирована альтернативная возможность заполнения списка формы, использующая свойство DataSource. Когда форма откроется, ее левый список будет заполнен, пользователь сможет выбрать из списка понравившиеся ему книги и перенести их в правый список. Зададим теперь обработчики события Click для командных кнопок ("Сохранить выбор" и "Не сохранять"):

private void button3_Click(object sender, System.EventArgs e) { int i =0; foreach(string item in listBox2.Items) { selected_items[i] = item; Debug.WriteLine(selected_items[i]); i++; } this.Hide(); } private void button4_Click(object sender, System.EventArgs e) { foreach(string item in listBox2.Items) { Debug.WriteLine(item); } this.Hide(); }




Начало  Назад  Вперед