}
}
}
Метод Form1_Load отображает в списке элементов hotellist список объектов, в которых хранится информация о гостиницах.
Управляющий элемент ListBox содержит свойство Items (Элементы), которое поддерживает коллекцию объектных ссылок. Сначала мы вызываем метод Items.Clear(), чтобы очистить список элементов от тех элементов, которые отображаются в нем в момент вызова метода. Потом с помощью цикла перебираем гостиницы в списке массивов и создаем строку, которая состоит из полей структуры гостиницы, разделенных запятыми. Чтобы добавить эту строку в список элементов, вызывается метод Items.Add().
Чтобы в списке элементов выбрать какой-нибудь элемент, нужно щелкнуть на нем. Выбор элемента вызовет событие SelectedIndexChanged. Доступ к выбранному элементу можно получить с помощью свойств SelectedIndex и SelectedItem. Если никакой элемент не выбран, значение SelectedItem будет равно -1. Ниже приведен код обработчика события SelectedIndexChanged.
private void hotellist_SelectedIndexChanged(object sender, EventArgs e) {
if (hotellist.SelectedIndex!= -1) {
String selected = hotellist.SelectedItem.ToString(); // выбранная строка
|
|
String[] fields;
fields = selected.Split(','); // поля = выбранное разбить;
label1.Text = fields[0]; // Город = полe [0];и т.д.
label2.Text = fields[1];
label3.Text = fields[2];
label4.Text = fields[3];
}
else {
label1.Text = "";
}
}
Поскольку в списке элементов элементы хранятся в виде объектных ссылок, мы выполняем приведение типа выбранного элемента к типу String. Для того чтобы выделить значения полей, разделенные запятыми, используется метод String.Split, затем значения сохраняются в массиве строк fields. Из массива эти значения переносятся в элементы label на форме для отображения.
Добавление объектов, вводимых на дополнительной форме AddHotelDialog, в коллекцию и элемент hotellist осуществляется в следующем коде:
private void button1_Click(object sender, EventArgs e) {
AddHotelDialog dlg = new AddHotelDialog();
dlg.ShowDialog();
if (dlg.HotelName!= "") {
label1.Text = dlg.HotelName;
label2.Text=dlg.City;
label3.Text=dlg.Rooms.ToString();
label4.Text=dlg.Rate.ToString();
String s=dlg.City+"," +dlg.HotelName+"," +dlg.Rooms.ToString()+"," +dlg.Rate.ToString();
hotellist.Items.Add(s);
Hotel ob=new Hotel(dlg.City,dlg.HotelName,dlg.Rooms,dlg.Rate);
list.Add(ob);
}
else {
MessageBox.Show("Введите данные", "Hotel Broker Administration",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
}
Задания к лабораторной работе
1. Создать учебные приложения Программа2 – Программа 5 и разобрать принцип их работы. Поместите в отчет примеры работы программ, их код с комментариями.
2. Создать SDI-приложение с элементами ввода и отображения полей класса из задания к лабораторной работе 2. Для этого использовать различные элементы управления: текстовые поля, списки, независимые и радио- кнопки, а также панели и менеджеры компоновки.
3. Ввод новых данных осуществлять через дополнительную модальную форму.
4. При изменении данных запрашивать подтверждение через окно диалога. В случае неполных данных сообщать об ошибке.
|
|
5. Объекты сохранять в коллекции.
6. Реализовать просмотр всей коллекции объектов через список. Для редактирования выбранного объекта создать дополнительную форму модального диалога.
7. Добавить на форму меню, позволяющее работать с пунктами: добавить, просмотреть, удалить, редактировать, справка.
8. Дублировать основные операции панелью инструментов.
Вопросы к защите лабораторной работы
- Что такое форма и ее назначение?
- Что такое элементы управления? На какие группы они делятся?
- Как установить элемент управления на форму и проинициализировать его?
- Что такое событие? Как в.Net реализуются события?
- Что такое обработчик события?
- Что такое делегат?
- Как задаются обработчики событий для элементов управления?
- Как происходит подключение к прослушиванию события?
- Как создать собственные события и их обработчики?
- Как создать верхнее меню?
- Как добавить несколько пунктов меню?
- Как установить определенному пункту меню сочетание клавиш?
- Как создать панель инструментов?
- Как добавить несколько кнопок на панель инструментов?
- Как разместить на кнопке изображение?
- Как добавить новую форму в приложение?
- Как организовать переход к добавленной форме?
- Что такое модальная и немодальная форма? Как они вызываются?
- Как добавить новый класс в проект?
- Какая компонента позволяет отображать список на форме?
- Какие компоненты позволяют создать набор радио-кнопок на форме?
- Какая компонента позволяет задавать на форме флажок?