Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб_раб34_р1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.13 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-приложение с элементами ввода и отображения полей класса индивидуального задания (в конце файла методических указаний). Для этого использовать различные элементы управления: текстовые поля, списки, независимые и радио- кнопки, а также панели и менеджеры компоновки.

  3. Ввод новых данных осуществлять через дополнительную модальную форму.

  4. При изменении данных запрашивать подтверждение через окно диалога. В случае неполных данных сообщать об ошибке.

  5. Объекты сохранять в коллекции.

  6. Реализовать просмотр всей коллекции объектов через список. Для редактирования выбранного объекта создать дополнительную форму модального диалога.

  7. Добавить на форму меню, позволяющее работать с пунктами: добавить, просмотреть, удалить, редактировать, справка.

  8. Дублировать основные операции панелью инструментов.

Занятие 2

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

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

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

Цель работы:

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

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

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

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

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

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

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

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

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

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