
- •Лабораторная работа 1 Тема: Типы данных и операторы языка с#. Массивы. Строки. Регулярные выражения
- •Типы данных c#
- •Преобразования типов
- •Преобразования строк в число. Класс Convert
- •Массивы в c#
- •Int[] k; //k – одномерный массив
- •Базовый класс System.Array
- •Строки в с# Класс Сhar
- •Класс String
- •Строковые константы
- •Пространство имен RegularExpression и классы регулярных выражений
- •Синтаксис регулярных выражений
- •Классы пространства RegularExpressions
- •1. Проработать примеры 1-8, данные в теоретических сведениях. Создать на их основе программы. Получить результаты работы программ и уметь их объяснить. Внести их в отчет с комментариями.
- •2. Выполнить два задания на двумерный массив по заданному номеру варианта и номеру, отсчитанному с конца.
- •3. Выполнить два задания на строки по заданному номеру варианта и номеру, отсчитанному с конца. Использовать в задачах два класса строк: String и StringBuilder.
- •4. Выполнить задание на применение регулярных выражений. Выбрать одно по заданному номеру.
- •Лабораторная работа 2 Тема: Структуры и перечисления как частные виды классов. Классы. Интерфейсы
- •[Атрибуты][модификаторы]enum имя_перечисления[: базовый класс] {список_возможных_значений}
- •[Атрибуты][модификаторы]struct имя_структуры [:список_интерфейсов] {тело_структуры}
- •Классы в c# [атрибуты][модификаторы]class имя_класса [:список_родителей] {тело_класса}
- •Индексаторы
- •Статические поля и методы класса
- •Наследование
- •Интерфейсы
- •Две стратегии реализации интерфейса
- •Преобразование к классу интерфейса
- •Проблемы множественного наследования
- •Коллизия имен
- •Ip1.Prop1("интерфейс iProps: свойство 1");
- •Ip1.Prop2("интерфейс 1 ", 88);
- •Ip2.Prop1("интерфейс iPropsOne: свойство1");
- •2. Наследование от общего предка
- •Обработка исключительных ситуаций
- •Блок finally
- •Лабораторная работа 3 Тема: Разработка gui. Создание sdi-приложений. Обработка событий
- •Создание простых форм с помощью комплекса инструментальных средств разработки программ .Net sdk
- •Режимы дизайна и кода
- •Элементы управления
- •Общие свойства, события и методы элементов управления
- •Обработка событий в Windows Forms
- •События MouseDown и Keypress
- •Форматирование элементов управления
- •Создание меню
- •Закрытие формы
- •Диалоговые окна
- •Создание панели инструментов
- •Список элементов ListBox
- •Потоковые классы
- •Встроенные типы данных и потоки
- •Класс File
- •Сериализация объектов
- •Создание многооконного приложения
- •Для каждого пункта меню пишем обработчики событий, выполняющие соответсвтвующие пункту действия. Перечисление MdiLayout
- •Вырезание, копирование и вставка текстовых фрагментов
- •Контекстное меню
- •Диалоговые окна
- •Сохранение файла при закрытии формы
- •OpenFileDialog и SaveFileDialog для sdi-приложений
- •Лабораторная работа 5 Тема: Создание и вывод графический изображений на форму. Анимация.
- •Класс Region
- •Вывод графических объектов без события Paint
- •Возможности класса Graphics
- •Класс Pen
- •Вывод изображений
- •Элемент управления PictureBox
- •Вывод изображений и двойная буферизация
Создание панели инструментов
Кнопки панели инструментов обеспечивают пользователям более легкий доступ к возможностям, которые определены в меню. В пространстве имен 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;
}
}
Задания к лабораторной работе
Создать учебные приложения Программа2 – Программа 5 и разобрать принцип их работы. Поместите в отчет примеры работы программ, их код с комментариями.
Создать SDI-приложение с элементами ввода и отображения полей класса из задания к лабораторной работе 2. Для этого использовать различные элементы управления: текстовые поля, списки, независимые и радио- кнопки, а также панели и менеджеры компоновки.
Ввод новых данных осуществлять через дополнительную модальную форму.
При изменении данных запрашивать подтверждение через окно диалога. В случае неполных данных сообщать об ошибке.
Объекты сохранять в коллекции.
Реализовать просмотр всей коллекции объектов через список. Для редактирования выбранного объекта создать дополнительную форму модального диалога.
Добавить на форму меню, позволяющее работать с пунктами: добавить, просмотреть, удалить, редактировать, справка.
Дублировать основные операции панелью инструментов.
Вопросы к защите лабораторной работы
Что такое форма и ее назначение?
Что такое элементы управления? На какие группы они делятся?
Как установить элемент управления на форму и проинициализировать его?
Что такое событие? Как в .Net реализуются события?
Что такое обработчик события?
Что такое делегат?
Как задаются обработчики событий для элементов управления?
Как происходит подключение к прослушиванию события?
Как создать собственные события и их обработчики?
Как создать верхнее меню?
Как добавить несколько пунктов меню?
Как установить определенному пункту меню сочетание клавиш?
Как создать панель инструментов?
Как добавить несколько кнопок на панель инструментов?
Как разместить на кнопке изображение?
Как добавить новую форму в приложение?
Как организовать переход к добавленной форме?
Что такое модальная и немодальная форма? Как они вызываются?
Как добавить новый класс в проект?
Какая компонента позволяет отображать список на форме?
Какие компоненты позволяют создать набор радио-кнопок на форме?
Какая компонента позволяет задавать на форме флажок?
Лабораторная работа 4
Тема: Создание MDI-приложений. Сериализация объектов.
Использование стандартных диалогов для сохранения и
загрузки данных программы
Цель работы:
Изучить особенности MDI приложений и способы их создания в Visual Studio .Net.
Сохранение данных в файл и загрузки из файла.
Освоить механизм сериализации и десериализации объектов.
Освоить применение стандартных диалогов сохранения и загрузки данных в приложение.
Теоретические сведения
Операции ввода/вывода данных в .NЕТ
Данные могут рассматриваться как поток байтов, символов или объектов. Чтение и запись объектов называются соответственно преобразованием из последовательной формы в параллельную и преобразованием в последовательную форму (сериализацией). Сериализация объектов может осуществляться в двух форматах: бинарном и XML-формате.
В пространстве имен System.IO есть несколько классов для чтения и записи, позволяющих использовать различные устройства хранения, если только данные можно трактовать как байты или символы.
Пространство имен System.Runtime.Serialization используется для сериализации в общей системе типов (Common Type System). Пространство имен System.Xml.Serialization используется для сериализации XML-документов.