Главная страница

выф. Ответы к защите 3 лабы по ООП. Лабораторная работа 3 Разработка gui. Создание sdiприложений


Скачать 0.87 Mb.
НазваниеЛабораторная работа 3 Разработка gui. Создание sdiприложений
Дата07.05.2022
Размер0.87 Mb.
Формат файлаdoc
Имя файлаОтветы к защите 3 лабы по ООП.doc
ТипЛабораторная работа
#516912
страница1 из 4
  1   2   3   4

ЛАБОРАТОРНАЯ РАБОТА 3

Разработка GUI. Создание SDI-приложений.

Обработка событий
Цель работы:

  • изучить принципы разработки графического интерфейса пользователя в приложениях для ОС Windows в Visual Studio;

  • освоить использование элементов графического интерфейса для управления работой приложения.

  • освоить принципы построения иерархических меню, создания диалоговых окон;

  • изучить модель обработки событий в языке C#.

Задания к лабораторной работе

  1. Создать учебные приложения Программа 2 –5 и разобрать принцип их работы.

  2. Создать типовое SDI-приложение Windows (Single Document Interface, одно-документный интерфейс) с элементами ввода и отображения для полей классов из задания к лабораторной работе 2. Использовать различные элементы управления: текстовые поля, списки, независимые переключатели и радиокнопки, панели для группировки элементов управления.

  3. Все созданные объекты отображать в виде таблицы.

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

  5. При редактировании объекта данные выбранного объекта из таблицы отображать в полях формы редактирования.

  6. Обязательно выполнять верификацию вводимых данных.

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

  8. Для просмотра выбранного из таблицы объекта использовать форму для редактирования объекта. При просмотре данные для изменения недоступны.

  9. Удалять выбранный объект из таблицы и коллекции с подтверждением.

  10. Добавить на форму меню с пунктами:

  • добавить,

  • просмотреть,

  • удалить,

  • редактировать,

  • выход,

  • справка.

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

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

Средством взаимодействия пользователя с программой является графический пользовательский интерфейс (Graphical User Interface, GUI). На практике программирование Windows-приложений с GUI предполагает экстенсивное использование различных инструментальных средств и мастеров, которые намного упрощают этот процесс.

Windows Forms — это часть каркаса .NET Framework, которая поддерживает создание приложений со стандартным GUI на платформе Windows.

Форма — это экранный объект, обеспечивающий функциональность программы. Как правило, приложение содержит главное окно, которое реализовано с помощью некоторого класса MyForm, производного от класса Form.

Запускаем Visual Studio .NET, создаем новый проект, для которого выбираем тип Windows Forms Application, задаем имя проекта — FirstForm и сохраняем его в папку, определяемую полем Location. На экране появилась пустая Windows-форма (рисунок 3.1).


Рисунок 3.1 -  Главное окно программы в режиме разработки приложения с GUI

Окно Object Browser (проводник объектов, View —> Object Browser) является средством получения информации о свойствах объектов. Можно получать краткое описание любого метода, класса или свойства, просто щелкнув на нем, — на информационной панели немедленно отобразится краткая справка.

Окно Class View (обзор классов, View —> Class View), позволяет перемещаться в коде по выбранному объекту; содержит методы, классы, данные всего листинга проекта. Для перехода, например, в class Form1 щелкаем на соответствующем названии в окне Class View.

Окно свойств Properties — основной инструмент настройки формы и ее компонент. Содержимое этого окна представляет собой весь список свойств выбранного в данный момент компонента или формы. Вызывается окно несколькими способами, чаще на выбранном объекте щелкаем правой кнопкой мыши и в контекстном меню пункт Properties. Когда вы только создали проект, в окне Properties отображаются свойства самой формы (см. табл. 3.1, 3.2).
Таблица3.1 - Описание интерфейса окна Properties

Элемент

Изображение

Описание

Object name



Название выбранного объекта, который является экземпляром какого-либо класса.

Categorized



Сортировка свойств выбранного объекта по категориям.

Alphabetic



Сортировка свойств и событий объекта в алфавитном порядке

Окончание таблицы3.1

Properties



Перечисление свойств объекта

Events



Перечисление событий объекта

Description Pane



Информация о выбранном свойстве.


В таблице3.2 приводится описание некоторых свойств формы, обычно определяемых в режиме дизайна.
Таблица 3.2 - Некоторые свойства формы

Свойство

Описание

Значение по умолч.

Name

Название формы в проекте.

Form1 и т.д.

AcceptButton

Значение кнопки, которая будет срабатывать при нажатии клавиши Enter.

None

BackColor

Цвет формы.

Control

Background-Image

Изображение на заднем фоне

None

CancelButton

Значение кнопки, которая будет срабатывать при нажатии клавиши Esc.

None

ControlBox

Наличие трех стандартных кнопок в верхнем правом углу формы: "Свернуть", "Развернуть" и "Закрыть"




Cursor

Вид курсора при его положении на форме

Default

DrawGrid

Включение сетки из точек, которая помогает форматировать элементы управления.

True

Font

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

Microsoft Sans Serif; 8,25pt

Icon

Изображение иконки, располагаемой в заголовке формы. Формат .ico



Maximize-Box

Определяется активность стандартной кнопки "Развернуть" в верхнем правом углу формы

True

Maximum-Size

Максимальный размер ширины и высоты формы при нажатии на стандартную кнопку "Развернуть"

(Во весь

экран)

Minimize-Box

Определяется активность стандартной кнопки "Свернуть" в верхнем правом углу формы

True

Minimum-Size

Минимальный размер ширины и высоты формы, задаваемый в пикселях.

0;0

Size

Ширина и высота формы

300; 300

Text

Заголовок формы.

Form1 и т.д.

Окончание таблицы3.2

Окончание

Window-State

Определение положения формы при запуске:

Normal — форма запускается с размерами, указанными в свойстве Size;

Minimized — форма запускается с минимальными размерами, указанными в свойстве MinimumSize;

Maximized — форма разворачивается на весь экран

Normal

FormBorder-Style

Определение вида границ формы:

None — форма без границ и строки заголовка;

FixedSingle — тонкие границы без возможности изменения размера пользователем;

Fixed3D — границы без возможности изменения размера с трехмерным эффектом;

FixedDialog — границы без возможности изменения, без иконки приложения;

Sizable — обычные границы: пользователь может изменять размер границ;

FixedToolWindow — фиксированные границы, имеется только кнопка закрытия формы;

SizableToolWindow — границы с возможностью изменения размеров, имеется только кнопка закрытия формы

Sizable

StartPosition

Расположения формы при запуске приложения:

Manual — форма появляется в верхнем левом углу экрана;

CenterScreen — в центре экрана;

WindowsDefaultLocation — расположение формы по умолчанию;

WindowsDefaultBoundsграницы формы принимают фиксированный размер;

CenterParent — в центре родительской формы

Windows-Default-Location

Кнопка Events переключает окно Properties в режим управления обработчиками различных событий (например, мыши, клавиатуры) и одновременно выводит список всех событий компонента. Двойной щелчок мыши в поле значения события генерирует обработчик для него и переключает в режим кода.

Окно Toolbox (панель инструментов, View —> Toolbox) содержит компоненты Windows-форм, называемые элементами управления, которые размещаются на форме. Оно состоит из нескольких закладок. Наиболее часто употребляемой закладкой является All Windows Forms. Для размещения нужного элемента управления достаточно просто щелкнуть на нем в окне Toolbox или, ухватив, перетащить его на форму.

Режимы дизайна и кода


При создании нового проекта запускается режим дизайна — форма представляет собой основу для расположения элементов управления. Для работы с программой следует перейти в режим кода. Это можно сделать нескольким способами: щелкнуть правой кнопкой мыши в любой части формы и выбрать View Code, в окне Solution Explorer сделать то же самое на компоненте Form1. После перехода в режим кода в этом проекте появится вкладка Form1.cs*, нажимая на которую, тоже можно переходить в режим кода.

Рассмотрим некоторые программные блоки:

1. Первый блок определяет, какие пространства имен используются в этом проекте:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Windows.Forms; и т.д.

Далее определяется собственное пространство имен, имя которого совпадает с названием проекта: namespace FirstForm. При необходимости это название можно менять.

2. Класс формы Form1, наследуемый от System.Windows. Forms.Form, содержит в себе почти весь код программы:
namespace FirstForm{

public partial class Form1 : Form {

public Form1() { InitializeComponent(); }

}

}

3. Метод Main в файле Program.cs реализует главную точку входа в программу —место, откуда начинается выполнение написанного нами кода:
namespace FirstForm{

static class Program {

///

/// The main entry point for the application.

///


[STAThread]

static void Main() {

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form1());

}

}}

При отладке больших программ удобно использовать нумерацию строк, которую можно включить в пункте меню Tools/Options…/Text Editor/C# — на форме General — галочка Line Numbers.

При запуске приложения в папке bin\Debug внутри папки проекта возникает файл FirstForm.exe и файлы, необходимые для отладки. Файл FirstForm.exe и представляет собой готовое приложение. Для распространения приложения его необходимо скомпилировать в режиме Release (Build.Butch Build)— тогда появится папка bin\Release, которая будет содержать только FirstForm.exe. Вы можете просто скопировать его на другой компьютер, и если там имеется .NET Framework, все будет работать.

Элементы управления


Элементы управления — это компоненты, обеспечивающие взаимодействие пользователя с программой. Среда Visual Studio предоставляет большое количество элементов, которые можно сгруппировать по нескольким функциональным группам.
Таблица 3.3 - Основные группы элементов управления

Категория

Интерфейсные элементы

Редактирование текста

TextBox, RichTextBox

Отображение текста

Label, LinkLabel, StatusBar

Выбор из списка

CheckedListBox, ComboBox, DomainUpDown, ListBox,

ListView, NumericUpDown, TreeView

Отображение графики

PictureBox

Хранение графики

ImageList

Ввод значений

CheckBox, CheckedListBox, RadioButton, TrackBar

Ввод даты

DateTimePicker, MonthCalendar

Диалоговые панели

ColorDialog, FontDialog, OpenFileDialog, PrintDialog,

PrintPreviewDialog, SaveFileDialog

Создание меню

MenuStrip, ContextMenuStrip

Команды

Button, LinkLabel, NotifyIcon, ToolBar

Объединение компонентов

Panel, GroupBox, TabControl

Базовым классом всех интерфейсных элементов является класс Control, содержащийся в пространстве имен System.Windows.Forms. В этом классе определены общие для всех интерфейсных элементов свойства, события и методы. Наиболее важные из них:

  • Cursor, Font, BackColor, ForeColor — свойства, значения которых элемент управления наследует от содержащего его контейнера, если значение этого свойства в явном виде не установлено и не определено в родительском классе;

  • Top, Left, Width, Height, Size, Location — свойства, отвечающие за размер и местоположение элемента относительно контейнера (для формы контейнером является экран);

  • Anchor и Dock — свойства, определяющие, согласно каким принципам перемещается и меняет размеры интерфейсный элемент при изменении размеров контейнера;

  • Text, ImeMode, RightToLeft — свойства, определяющие надпись или текст в элементе управления, а также направление текста и способ его редактирования;

  • Enabled, Visible — свойства, определяющие, доступен ли пользователю интерфейсный элемент и отображается ли он;

  • Parent — свойство, указывающее, какой из интерфейсных элементов является контейнером для данного элемента.

Обработка событий в Windows Forms

GUI управляется событиями. Приложение выполняет действия в ответ на события, вызванные пользователем, например, на щелчок кнопкой мыши или выбор пункта меню. В Windows Forms применяется модель обработки событий .NET, в которой делегаты используются для того, чтобы связать события с обрабатывающими их методами. В классах Windows Forms используются групповые делегаты. Групповой делегат содержит список связанных с ним методов. Когда в приложении происходит событие, управляющий элемент возбуждает событие, вызвав делегат для этого события, который вызывает связанные с ним методы. Для того чтобы добавить делегат к событию используется перегруженный оператор +=. Например:

this.MouseClick += new MouseEventHandler(this.Form1_MouseClick);

Объявление обработчика для этого события:

private void Form1_MouseClick(object sender, MouseEventArgs e)

{ }
В качестве параметра обработчик событий получает объект класса МоuseEventArgs (производный от класса EventArgs). Свойства этого объекта содержат информацию, связанную с данным событием.

  • Button (Кнопка) определяет, какая кнопка была нажата,

  • Clicks (Щелчки) определяет, сколько раз была нажата и отпущена кнопка,

  • Свойство Delta (Дельта) является счетчиком оборотов колесика мыши;

  • X и Y — координаты точки, в которой находился указатель в момент нажатия кнопки мыши

Внесем изменения в FirstForm, чтобы при щелчке кнопкой мыши строка с приветствием перемещалась на место щелчка.

Программа 1: Отображает перемещение приветствия по щелчку мыши.


public partial class Form1 : Form {

float x, y; // координаты

Brush pStdBrush; // Кисть

Graphics poGraphics;

public Form1() {

InitializeComponent();

x=10; y=20;

pStdBrush = new SolidBrush(Color.Black);

poGraphics = this.CreateGraphics();

this.Text = "Программа 1";

this.Show();

poGraphics.DrawString("Hello, Window Forms", this.Font, pStdBrush, x, y);

}

private void Form1_MouseClick(object sender, MouseEventArgs e) {

// координаты точки щелчка мыши

x = (float)e.X; y = (float)e.Y;

poGraphics.DrawString("Hello, Window Forms", this.Font, pStdBrush, x, y);

}

}

Параметры метода DrawString:

  • выводимая строка;

  • шрифт (Font— свойство класса Form, которое определяет шрифт, по умолчанию применяемый для вывода текста в форму);

  • используемая кисть;

  • координаты в пикселях.

Метод Form1_MouseClick устанавливает координаты текста, х и у, равными координатам точки, в которой находился указатель в момент щелчка.

Несколько обработчиков для события. Реализуем два обработчика события MouseClick. Второй обработчик по щелчку кнопкой мыши просто отображает окно сообщения. Метод ShowClick подключается к событию в ручную аналогично методу Form1_MouseClick в файле Form1.Designer.cs.

Программа 2: Два обработчика событий для MouseClick
public partial class Form1 : Form {

. . .

private void Form1_MouseClick(object sender, MouseEventArgs e) {

x = (float)e.X; y = (float)e.Y;

poGraphics.DrawString("Hello, Window Forms", this.Font, pStdBrush, x, y);

}

void ShowClick (object pSender, MouseEventArgs e)

MessageBox.Show("Mouse clicked!!'");

}

Введем в пример обработку события KeyPress, а также покажем, как в событии MouseDown различать, какая кнопка была нажата, левая или правая (программа 3).

Обработка событий от правой и левой кнопкои мыши. Для того чтобы определить, какая кнопка мыши была нажата используем свойство Button параметра MouseEventArgs. Перепишем методы обработчика событий:

private void Form1_MouseClick(object sender, MouseEventArgs e) {

// если левая кнопка

if (e.Button == System.Windows.Forms.MouseButtons.Left) {

x = (float)e.X; y = (float)e.Y;

poGraphics.DrawString("Hello, Window Forms", this.Font, pStdBrush, x, y);

}

}

void ShowClick (object pSender, MouseEventArgs e) {

// если правая кнопка

if (e.Button == System.Windows.Forms.MouseButtons.Right)

MessageBox.Show("Mouse clicked!!'");

}

Событие Keypress. При нажатии пользователем на клавишу, в конец строки приветствия будет добавлен соответствующий символ. Вместо класса String используется класс StringBuilder, который более эффективен в этой ситуации.

public partial class Form1 : Form {

StringBuilder pStr;

String s;

public Form1() {

. . .

pStr = new StringBuilder("Hello, Window Forms");

s = pStr.ToString();

poGraphics.DrawString(s, this.Font, pStdBrush, x, y);

}

private void Form1_KeyPress(object sender, KeyPressEventArgs e)

{ pStr.Append(e.KeyChar); // Добавляем в конец

s = pStr.ToString();

poGraphics.DrawString(s, this.Font, pStdBrush, x, y);

}

}

Программа 4: Создадим шуточную программу, представляющую собой диалоговое окно с двумя кнопками. Назовем его SocOpros. Из окна Toolbox перетаскиваем на форму две кнопки Button и надпись Label и устанавливаем следующие свойства элементов управления и формы (табл. 3.4):
Таблица 3.4 - Описание формы приложения

Форма, свойства

Значение

FormBorderStyle

Fixed3D

Icon

Путь С:\Program Files\Microsoft Visual Studio 8\ Common7\ VS2008ImageLibrary\icons\....

Text

Социологический опрос

Label1, свойство

Значение

Bold

True

Text

Вы довольны своей зарплатой?

Button1, свойство

Значение

Name

Btnyes

Text

Да

Button2, свойство

Значение

Name

Btnno

Text

Нет


Щелкаем дважды по кнопке "Да". В обработчике этой кнопки вставляем следующий код:

void btnyes_Click(object sender, EventArgs e){

MessageBox.Show("Мы и не сомневались, что Вы так думаете!");

}
Выделяем кнопку "Нет". Открываем окно Properties. Переключаемся в окно событий и дважды щелкаем в поле MouseMove.

В обработчике связываем движение мыши с координатами кнопки и устанавливаем координаты, куда она будет возвращаться, если во время своего движения выйдет за указанную область:

private void Btnno_MouseMove(object sender, MouseEventArgs e) {

Btnno.Top -= e.Y; Btnno.Left += e.X;

if (Btnno.Top < -10 || Btnno.Top > 100) Btnno.Top = 60;

if (Btnno.Left < -80 || Btnno.Left > 250) Btnno.Left = 120;

}

Создание меню

Добавим в приложение SocOpros простое меню для выхода из программы, пункт меню File / Exit.

1. Откройте панель инструментов Toolbox и перетащите управляющий элемент MenuStrip на форму приложения.

2. Для создания выпадающего меню File с пунктом Exit, введите File и Exit, как на рис. 3.2. В окне Properties измените названия этих пунктов меню на MenuFile и MenuExit.

3. Добавте код в обработчик события File / Exit.

private void MenuExit_Click(object sender, EventArgs e) {

Application.Exit();

}



Рисунок 3.2 – MenuStrip для добавления в форму меню

Выбор пункта меню сочетанием клавиш. В свойстве ShortcutKeys в окне Properties для пункта меню выбрать из появившегося окна нужное сочетание клавиш, для отображения рядом с названием пункта меню.

Дополнительные возможности меню. В классе MenuStrip определены свойства, при помощи которых можно, устанавливать флажок напротив пункта меню, прятать пункты меню, делать некоторые пункты меню недоступными и т. п.

Таблица 3.5 – Свойства MenuItem, обеспечивающие дополнительные возможности меню

Свойство

Назначение


Checked

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

Defaultltem

Определяет какой пункт меню выбран по умолчанию

Enabled

Определяет доступен ли тот или иной пункт меню

Index

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

Shortcut

Устанавливает клавиши, используемые для активизации элемента меню в приложении

Text

Устанавливает название пункта меню

Закрытие формы

Существует несколько способов закрыть окно:

  • щелкнуть на кнопке "X" (Закрыть) в правом верхнем углу окна;

  • закрыть окно из системного меню в левом верхнем углу окна;

  • закрыть окно с помощью комбинации клавиш Alt+F4,

  • выйти из приложения с помощью меню File / Exit

Когда закрывается форма можно остановить процедуру завершения:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) {

if (MessageBox.Show("Do you want to close", "SocOpros",

MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==

System.Windows.Forms.DialogResult.Yes)

Application.Exit();

}

Для того чтобы закрыть главное окно и не выходить из приложения обработчик меню File / Exit должен вызвать метод Сlose.

private void MenuExit_Click(object sender, EventArgs e) {

Close();

}

Диалоговые окна

Диалоговое окно — это набор управляющих элементов, с помощью которых упрощается процесс ввода данных. Для создания простых диалоговых окон используется класс MessageBox. Более сложные диалоговые окна создаются на основе форм.

Создание модального диалога

Программа 5:

1. Cоздайте новое приложение AdminForm. На форме расположите кнопки Add и Exit и 4 элемента Label для отображения информации (рис. 3.3). По щелчку на кнопке Add отображается пустая форма AddHotelDialog.cs. Это обычная форма.

2. Откройте файл AddHotelDialog.cs в режиме конструктора. В окне Properties установите значение свойства FormBorderStyle равным FixedDialog.

3. Установите значение свойств ControlBox, MinimizeBox и MaximizeBox равным false.

4. Добавьте на форму текстовые поля TextBox и Label, содержащие информацию о гостинице. Кроме того, необходимо добавить кнопки ОК и Cancel (рис. 3.4).

5. Установите значения и имена элементов в соответствии с табл. 3.6.

6. Установите значение свойства DialogResult кнопки ОК равным ОК. Точно так же установите значение этого свойства кнопки Cancel равным Cancel.



Рисунок 3.3 - Окно приложения Рисунок 3.4 – Диалоговое окно

AdminForm ввода информации о гостинице

Таблица 3.6 - Значения свойств текстовых полей и кнопок диалога AddHotelDialog.cs

Имя (Name)

Текст

txtCity

(не заполнено)

txtHotelName

(не заполнено)

txtNumberRooms

(не заполнено)

txtRate

(не заполнено)

cmdOk

ОК

cmdCancel

Cancel

7. В файле AdminForm.cs временно добавьте к обработчику cmdAdd_Click код, который отвечает за отображение окна диалога. Диалоговое окно отображается с помощью метода ShowDialog, а не метода Show, который используется для обычных форм.

private void cmdAdd_Click (object sender, EventArgs e) {

AddHotelDialog dlg = new AddHotelDialog();

dlg.ShowDialog();

}

8. Скомпонуйте и запустите пример. Теперь диалоговое окно уже можно открыть с помощью кнопки Add, а закрыть— с помощью любой из кнопок ОК или Cancel. Можно проверить, что диалоговое окно является модальным, пощелкав мышью где-нибудь еще в приложении.

9. Закрыть приложение можно кнопкой Exit, добавив обработчик события:

private void cmdExit_Click(object sender, EventArgs e) {

if(MessageBox.Show("Do you want to close", "Warning",

MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==

System.Windows.Forms.DialogResult.Yes) {

Application.Exit();

}

Передача данных между диалогом и родительской формой

Для этих целей в классах .NET Framework нет встроенного механизма. В классе диалога для каждого сообщения, которое будет передаваться между родительской формой и диалогом, нужно определить свойство. Добавим в класс AddHotelDialog свойства City, HotelName, Rate (Стоимость) и NumberRooms.

public String City {

get { return txtCity.Text; }

set { txtCity.Text = value; } }

public String HotelName {

get { return (txtHotelName.Text); }

set { txtHotelName.Text = value; } }

public int Rooms {

get { return Convert.ToInt32(txtNumberRooms.Text); }

set { txtNumberRooms.Text = value.ToString(); } }

public double Rate {

get { return Convert.ToDouble(txtRate.Text); }

set { txtRate.Text = value.ToString(); } }

private void cmdOk_Click(object sender, EventArgs e) {

Close();

}
Теперь можно использовать эти свойства при закрытии диалогового окна с помощью кнопки ОК.

private void cmdAdd_Click(object sender, EventArgs e) {

AddHotelDialog dlg = new AddHotelDialog();

dlg.ShowDialog();

if (dlg.HotelName != "") {

label1.Text = dlg.City;

label2.Text = dlg.HotelName;

label3.Text = dlg.Rooms.ToString();

label4.Text = dlg.Rate.ToString();

}

else {

MessageBox.Show("Введите данные", "Hotel Broker Administration", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

return;

}

}

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

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

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

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

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

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

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

Список элементов 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 {

ArrayList list = new 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);

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);

}

}

}

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];

label2.Text = fields[1];

label3.Text = fields[2];

label4.Text = fields[3];

} else { label1.Text = ""; }

}

Добавление объектов, вводимых на дополнительной форме AddHotelDialog, в коллекцию и элемент hotellist осуществляется в обработчике события при нажатии на кнопку Add:

private void cmdAdd_Click(object sender, EventArgs e) {

. . .

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);

}

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

  1. Что такое окно приложения?

Окно — основное понятие оконного интерфейса, интерфейсный контейнер. Кроме дочерних элементов интерфейса, окно также может содержать элементы управления самим окном. Важная особенность окон — возможность перекрываться, то есть располагаться поверх друг друга, полностью или частично закрывая нижнее окно.

Окно приложения обеспечивает взаимодействие пользователя с программой во время ее выполнения.


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

Форма – это, как правило, экранный объект, прямоугольной формы, который можно применять для предоставления информации пользователю и для обработки ввода информации от пользователя.


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

Элементы управления — это компоненты, обеспечивающие взаимодействие пользователя с программой. Среда Visual Studio предоставляет большое количество элементов, которые можно сгруппировать по нескольким функциональным группам.
Таблица 3.3 - Основные группы элементов управления

Категория

Интерфейсные элементы

Редактирование текста

TextBox, RichTextBox

Отображение текста

Label, LinkLabel, StatusBar

Выбор из списка

CheckedListBox, ComboBox, DomainUpDown, ListBox,

ListView, NumericUpDown, TreeView

Отображение графики

PictureBox

Хранение графики

ImageList

Ввод значений

CheckBox, CheckedListBox, RadioButton, TrackBar

Ввод даты

DateTimePicker, MonthCalendar

Диалоговые панели

ColorDialog, FontDialog, OpenFileDialog, PrintDialog,

PrintPreviewDialog, SaveFileDialog

Создание меню

MenuStrip, ContextMenuStrip

Команды

Button, LinkLabel, NotifyIcon, ToolBar

Объединение компонентов

Panel, GroupBox, TabControl



  1. Что такое классы-контейнеры? Для чего используются при построении GUI? Приведите примеры классов-контейнеров.

Для организации элементов управления в связанные группы существуют специальные элементы - контейнеры. Например, Panel, FlowLayoutPanel, SplitContainer, GroupBox. Ту же форму также можно отнести к контейнерам. Использование контейнеров облегчает управление элементами, а также придает форме определенный визуальный стиль.
Базовым классом всех интерфейсных элементов является класс Control, содержащийся в пространстве имен System.Windows.Forms. В этом классе определены общие для всех интерфейсных элементов свойства, события и методы. Наиболее важные из них:

• Cursor, Font, BackColor, ForeColor — свойства, значения которых элемент управления наследует от содержащего его контейнера, если значение этого свойства в явном виде не установлено и не определено в родительском классе;

• Top, Left, Width, Height, Size, Location — свойства, отвечающие за размер и местоположение элемента относительно контейнера (для формы контейнером является экран);

• Anchor и Dock — свойства, определяющие, согласно каким принципам перемещается и меняет размеры интерфейсный элемент при изменении размеров контейнера;

• Text, ImeMode, RightToLeft — свойства, определяющие надпись или текст в элементе управления, а также направление текста и способ его редактирования;

• Enabled, Visible — свойства, определяющие, доступен ли пользователю интерфейсный элемент и отображается ли он;

• Parent — свойство, указывающее, какой из интерфейсных элементов является контейнером для данного элемента.


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

Большинство форм создается путем добавления элементов управления на поверхность формы для определения пользовательского интерфейса.

  1   2   3   4


написать администратору сайта