Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб.раб. поС#.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.88 Mб
Скачать

Создание панели инструментов

Кнопки панели инструментов обеспечивают пользователям более легкий доступ к возможностям, которые определены в меню. В пространстве имен System.Windows.Forms предусмотрены типы, которые облегчают работу с панелями инструментов. Первый класс, который используется для создания панелей инструментов, — это класс ToolStrip.

Для добавления объекта панель инструментов:

  • Перетащить объект ToolStrip с панели Toolbox.

  • Растянуть на форме, расположив в нужной части окна.

  • По умолчанию будет сформировано метка на панели для выбора типа объектов панели инструментов.

  • Выберите объект Button. Появится заготовка для кнопки с изображением, чтобы добавить новое изображение на кнопку, щелкнуть по созданной кнопке правой клавишей мыши и выбрать Set Image. В появившемся окне нажать кнопку Import. В диалоговом окне выбрать путь к рисунку для загрузки в качестве изображения кнопки.

Таблица 3.8 - Свойства класса ToolStrip

Свойство

Назначение

BorderStyle

Определяет стиль рамки вокруг панели инструментов. Используются значения из перечисления BorderStyle

Buttons

Для работы с набором кнопок на панели инструментов

ButtonSize

Определяет размер кнопок на панели инструментов

ImageList

Возвращает элемент управления ImageList, в котором хранятся изображения, используемые на панели инструментов

Для добавления обработчика события ButtonClick для кнопок объекта toolStrip1, необходимо:

  • щелкнуть два раза указателем мыши по кнопке;

  • в открывшемся окне просмотра кода ввести необходимый программный код.

Список элементов ListBox

Добавьте в проект новый класс, описывающий объект гостиница.

class Hotel {

public Hotel(String city, String name, int r, double m) {

City = city; HotelName = name;

Rooms = r; Rate = m;

}

public String City, HotelName;

public int Rooms;

public double Rate;

}

При запуске программы AdminForm в процессе инициализации метод Form1_Load осуществляет начальную загрузку списка элементов hotellist, — в него загружается список гостиниц.

public partial class Form1 : Form {

System.Collections.ArrayList list = new System.Collections.ArrayList(); // список гостиниц

public Form1() {

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e) {

Hotel ob1=new Hotel("Москва","Россия",200,1500);

list.Add(ob1);

Hotel ob2=new Hotel("Москва","Прага",200,3000);

list.Add(ob2);

Hotel ob3=new Hotel("Новосибирск","Объ",150,1500);

list.Add(ob3);

Hotel ob4=new Hotel("Новосибирск","Тратата",300,1200);

list.Add(ob4);

Hotel ob5=new Hotel("Москва","Измайловская",300,3500);

list.Add(ob5);

Hotel ob6=new Hotel("Тирасполь","Дружба",200,1000);

list.Add(ob6);

hotellist.Items.Clear();

if (list == null) { return; }

foreach(Hotel hotel in list) { // строка для записи в элемент ListBox hotellist

String city = hotel.City.Trim();

String name = hotel.HotelName.Trim();

String rooms = hotel.Rooms.ToString(); // гостиница

String rate = hotel.Rate.ToString();

String str = city + "," + name + "," + rooms + "," + rate;

hotellist.Items.Add(str); // Добавить элементы

}

}

}

Метод 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. Дублировать основные операции панелью инструментов.

Вопросы к защите лабораторной работы

  1. Что такое форма и ее назначение?

  2. Что такое элементы управления? На какие группы они делятся?

  3. Как установить элемент управления на форму и проинициализировать его?

  4. Что такое событие? Как в .Net реализуются события?

  5. Что такое обработчик события?

  6. Что такое делегат?

  7. Как задаются обработчики событий для элементов управления?

  8. Как происходит подключение к прослушиванию события?

  9. Как создать собственные события и их обработчики?

  10. Как создать верхнее меню?

  11. Как добавить несколько пунктов меню?

  12. Как установить определенному пункту меню сочетание клавиш?

  13. Как создать панель инструментов?

  14. Как добавить несколько кнопок на панель инструментов?

  15. Как разместить на кнопке изображение?

  16. Как добавить новую форму в приложение?

  17. Как организовать переход к добавленной форме?

  18. Что такое модальная и немодальная форма? Как они вызываются?

  19. Как добавить новый класс в проект?

  20. Какая компонента позволяет отображать список на форме?

  21. Какие компоненты позволяют создать набор радио-кнопок на форме?

  22. Какая компонента позволяет задавать на форме флажок?

Лабораторная работа 4

Тема: Создание MDI-приложений. Сериализация объектов.

Использование стандартных диалогов для сохранения и

загрузки данных программы

Цель работы:

  • Изучить особенности MDI приложений и способы их создания в Visual Studio .Net.

  • Сохранение данных в файл и загрузки из файла.

  • Освоить механизм сериализации и десериализации объектов.

  • Освоить применение стандартных диалогов сохранения и загрузки данных в приложение.

Теоретические сведения

Операции ввода/вывода данных в .NЕТ

Данные могут рассматриваться как поток байтов, символов или объектов. Чтение и запись объектов называются соответственно преобразованием из последовательной формы в параллельную и преобразованием в последовательную форму (сериализацией). Сериализация объектов может осуществляться в двух форматах: бинарном и XML-формате.

В пространстве имен System.IO есть несколько классов для чтения и записи, позволяющих использовать различные устройства хранения, если только данные можно трактовать как байты или символы.

Пространство имен System.Runtime.Serialization используется для сериализации в общей системе типов (Common Type System). Пространство имен System.Xml.Serialization используется для сериализации XML-документов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]