Цикл существования типа Form 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Цикл существования типа Form



Мы уже знаем, что "жизнь" формы начинается тогда, когда вызывается конструктор типа, перед его передачей методу Application.Run(). В дальнейшем "оконные типы" поддерживают множество событий, происходящих в различные моменты цикла существования таких типов.

После размещения соответствующего объекта в управляемой динамической памяти среда разработки приложений генерирует событие Load. В обработчике событий Load можно настроить вид и поведение формы, подготовить содержащиеся в форме дочерние элементы управления (окна списков, деревья просмотра и т.д.), организовать доступ к ресурсам, необходимым для работы формы (установить связь с базами данных, создать агенты для удаленных объектов и т.д.).

Следующим событием, генерируемым после события Load, является событие Activated. Это событие генерируется тогда, когда форма получает фокус ввода, как активное окно на рабочем столе. Логическим "антиподом" события Activated является (конечно же) событие Deactivate, которое генерируется тогда, когда форма утрачивает фокус ввода, становясь неактивным окном. Легко догадаться, что события Activated и Deactivate в цикле существования формы могут генерироваться множество раз, поскольку пользователь может переходить от одного активного приложения к другому.

Когда пользователь решает закрыть соответствующую форму, по очереди генерируются еще два события: Closing и Closed. Событие Closing генерируется первым и дает возможность предложить конечному пользователю многими нелюбимое (но полезное) сообщение "Вы уверены, что хотите закрыть это приложение?". Этот шаг с требованием подтвердить выход полезен тем, что пользователю получает возможность сохранить данные соответствующего приложения перед завершением работы программы.

Событие Closing работает в паре с делегатом CancelEventHandler, определенным в пространстве имен System.ComponentModel. Если установить для свойства CancelEventArgs.Cancel значение true (истина), форме будет дано указание возвратиться к нормальной работе, и форма уничтожена не будет. Если установить для CancelEventArgs.Cancel значение false (ложь), будет сгенерировано событие Closed, и приложение Windows Forms будет завершено (домен приложения будет выгружен и соответствующий процесс прекращен).

Чтобы закрепить в памяти последовательность событий, происходящих в рамках цикла существования формы, рассмотрим новый файл MainWindow.cs, в котором события Load, Activated, Deactivate, Closing и Closed обрабатываются в конструкторе класса так, как показано ниже (не забудьте добавить в программу директиву using для пространства имен System.ComponentModel, чтобы получить доступ к определению CancelEventArgs).

public MainForm()

{ // Обработка различных событий цикла существования формы.

Closing += new CancelEventHandler(MainForm_Closing);

  Load += new EventHandler(MainForm_Load);

  Closed += new EventHandler(MainForm_Closed);

  Activated += new EventHandler(MainForm_Activated);

  Deactivate += new EventHandler(MainForm_Deactivate);

}

В обработчиках событий Load, Closed, Activated и Deactivate в строковую переменную lifeTimelnfo добавляется имя перехваченного события. Обработчик события Closed отображает значение этой строки в окне сообщения.

private void MainForm_Load(object sender, System.EventArgs e)

{ lifeTimelnfo += "Событие LoadW; }

private void MainForm_Activated(object sender, System.EventArgs e)

{ lifeTimelnfo += "Событие Activate\n"; }

private void MainForm_Deactivate(object sender, System.EventArgs e)

{ lifeTimelnfo += "Событие Deactivated"; }

private void MainForm_Closed(object sender, System.EventArgs e)

{ lifeTimelnfo += "Событие ClosedW; MessageBox.Show(lifeTimelnfo); }

В обработчике события Closing задается вопрос о том, действительно ли пользователь желает завершить работу приложения. При этом используется поступающий на вход объект CancelEventArgs.

private void MainForm_Closing(object sender, CancelEventArgs e)

{ DialogResult dr =

MessageBox.Show("Вы ДЕЙСТВИТЕЛЬНО хотите закрыть приложение?",

 "Событие Closing!", MessageBoxButtons.YesNo);

  if (dr == DialogResult.No) e.Cancel = true;

  else e.Cancel = false;

}

Обратите внимание на то, что метод MessageBox.Show() возвращает тип DialogResult, значение которого идентифицирует кнопку (Да, Нет), нажатую в форме конечным пользователем. Запустите приложение на выполнение и несколько раз поочередно предоставьте форме фокус ввода и уберите ее из фокуса ввода (чтобы сгенерировать события Activated и Deactivate). После прекращения работы вы увидите блок сообщений, аналогичный показанному на рис. 19.5.

Рис. 19.5. "Биография" типа, производного от Form

Большинство наиболее интересных возможностей типа Form связано с соз­данием и настройкой систем меню, панелей инструментов и строк состояния. Необходимый для этого программный код не слишком сложен, но Visual Studio 2005 предлагает целый набор графических инструментов проектирования, кото­рые позаботятся о создании значительной части такого программного кода за вас. Поэтому давайте на время скажем "до свидания" компилятору командной строки и займемся созданием приложений Windows Forms с помощью Visual Studio 2005.

Списки

Переключатели

Меню

Timer


 

 

Form (Форма)

Свойства формы (объекта класса Form)

Свойство Описание
Name Имя формы
Text Текст заголовка
Location Положение компонента на поверхности формы
Size.Width Ширина формы (рабочая область вместе с правой и левой границей)
Size.Height Высота формы (рабочая область вместе с верхней, нижней границей и заголовком)
StartPosition Положение формы в момент первого появления на экране (после запуска программы). Форма может находиться в центре экрана (CenterScreen), в цен­тре родительской формы (CenterParent). Положе­ние формы может также определяться значением свойства Location. В последнем случае свойство StartPosition должно иметь значение Manual  
Location.X Расстояние от верхней границы формы до верхней границы экрана (или родительской формы)
Location.Y Расстояние от левой границы формы до левой границы экрана (или родительской формы)
FormBorderStyle Вид границы формы. Граница может быть масшта­бируемой (Sizable), тонкой не масштабируемой (FixedSingle), отсутствовать (None). При отсутствии границы (None) окно отображается без заголовка, вследствие чего изменить размер и положение тако­го окна не удастся
ControlBox Если значение равно False, системное меню про­граммы (контекстное меню, отображаемое при правом щелчке мыши на заголовке окна программы или на панели задач), а также кнопки управления окном не отображаются (команды Свернуть, Развернуть, Закрыть в заголовке окна программы)
MaximizeBox Признак доступности кнопки Развернуть
MinimizeBox Признак доступности кнопки Свернуть
Icon Значок в заголовке окна
Font  
Opacity Степень прозрачности формы. Форма может быть абсолютно непрозрачной (100%) или абсолютно прозрачной (0 %). Если значение находится в диа­пазоне 0—100%, то сквозь форму будет видна по­верхность, на которой она находится

 

 

Базовые компоненты (элементы управления)

Button

Компонент Button представляет собой командную кнопку. Свой­ства компонента приведены в табл. 2.2.

Таблица. 2.2. Свойства компонента Button

Свойство Описание
Text Текст (надпись) на кнопке
TextAlign Положение текста (надписи) на кнопке. Надпись может располагаться в центре (MiddleCenter), быть прижата к левой (MiddleLeft) или правой (MiddleRight) границе Можно задать и другие способы размещения надписи (TopLeft, TopCenter, TopRight, BottomLeft, BottomCenter. BottomRight)
FlatStyle Кнопка может быть стандартной (Standard), плоской (Flat) или "всплывающей" (Popup)
Location Положение кнопки на поверхности формы. Уточняющее свойство X определяет расстояние от левой границы кнопки до левой границы формы, уточняющее свойство Y - от верхней границы кнопки до верхней границы кли­ентской области формы (нижней границы заголовка)
Size Размер кнопки
Font Шрифт, используемый для отображения текста на кнопке
ForeColor Цвет текста, отображаемого на кнопке
Enabled Признак доступности кнопки. Кнопка доступна, если значение свойства равно True, и недоступна (например, событие Click в результате щелчка на кнопке не возникает), если значение свойства равно False
Visible Позволяет скрыть кнопку (False) или сделать ее видимой (True)
Image Картинка на поверхности формы. Рекомендуется использовать gif-файл, в котором определен прозрачный, цвет
ImageAlign Положение картинки на кнопке. Картинка может располагатъся в центе (MiddleCenter), быть прижата к левой (MiddleLeft) или правой (MiddleRight) границе. Можно задать и другие способы размещения картинки на кнопке (TopLeft, TopCenter, TopRight, BottomLeft, BottomCenter, BottomRight)
ImageList Набор изображений, из которых может быть выбрано то, которое будет отображаться на поверхности кнопки. Представляет собой объект типа ImageList. Чтобы задать значение свойства, в форму приложения нужно добавить компонент ImageList
ImageIndex Номер (индекс) изображения из набора ImageList, которое отображается на кнопке
ToolTip Подсказка, появляющаяся рядом с указателем мыши при позиционировании его на кнопке. Чтобы свойство было доступно, в форму приложения надо добавить компонент ToolTip

ComboBox

Компонент ComboBox представляет собой комбинацию поля редактирования и списка, что дает возможность ввести данные путем набора на клавиатуре или выбором из списка. Свойства компонента приведены в табл. 2.3.

Таблица 2.3. Свойства компонента CamboBox

Свойство Описание
DropDownStуle Вид компонента: DropDown - поле ввода и раскрывающийся список; Simple - поле ввода со списком; DropDownList - раскрывающийся список
Text Текст, находящийся в поле ввода/редактирования (для компонентов типа DropDown и Simple)
Items Элементы списка - коллекция строк
Items.Count Количество элементов списка
SelectedIndex Номер элемента, выбранного в списке. Если ни один из элементов списка не выбран, то значение свойства равно -1
Sorted Признак необходимости автоматической сортировки (True) списка после добавления очередного элемента
MaxDropDownItems Количество отображаемых элементов в раскрытом списке. Если количество элементов списка больше чем MaxDropDownItems, то появляется вертикальная полоса прокрутки
Location Положение компонента на поверхности формы
Size Размер компонента без (для компонентов типа DropDown и DropDownList) или с учетом (для компонента типа Simple) размера области списка или области ввода
DropDownWidth Ширина области списка
Font Шрифт, используемый для отображения содержимого поля редактирования и элементов списка

 

ContextMenu

Компонент ContextMenu представляет собой контекстное меню — список команд, который отображается в результате щелчка правой кнопкой мыши. Элементы контекстного меню - объекты MenuItem. Свойства объекта MenuItem приведены в табл. 2.4.

Таблица 2.4. Свойства объекта Menuitem

Свойство Описание
Text Текст команды контекстного меню
Enabled Признак доступности команды. Если значение свойства равно False, то команда недоступна (в результате щелчка на команде событие Click не происходит, название элемента меню отображается инверсным цветом по отношению к доступному пункту меню)
Checked Признак того, что элемент меню выбран. Если значение свойства равно True, то элемент помечается галочкой или (если значение свойства RadioCheck равно True) точкой. Свойство Checked обычно используется для тех элементов меню, которые применяются для отображения параметров
RadioCheck Признак того, что для индикации состояния свойства Checked используется точка (True), а не галочка (False)

 

CheckBox

Компонент CheckBox представляет переключатель, который может находиться в одном из двух состояний: выбранном или невыбранном. Часто вместо «выбранный» говорят «установленный», вместо «невыбранный» - «сброшенный» или «выключенный». Рядом с переключателем обычно находится поясняющий текст. Свойства компонента CheckBox приведены в табл. 2.5.

Таблица 2.5. Свойства компонента CheckBox

 

Свойство Описание
Text Текст, который находится справа от кнопки
Checked Состояние, внешний вид переключателя. Если переключатель выбран, то значение свойства равно True. Если переключатель сброшен, то значение свойства равно False
TextAllign Положение текста в попе отображения текста. Текст может располагаться в центре поля (MiddleCenter), быть прижат к левой (MiddleLeft) или правой (MiddleRight) границе. Можно задать и другие способы размещения текста надписи (TopLeft, TopCenter,
CheckAllign Положение кнопки в поле компонента. Кнопка может быть прижата к левой верхней границе (TopLeft), прижата к левой границе и находиться на равном расстоянии от верхней и нижней границ поля компонента (MiddleLeft). Есть и другие варианты размещения кнопки в поле компонента
Enabled Свойство позволяет сделать переключатель недоступ­ным (False)
Visible Свойство позволяет скрыть (False) переключатель
AutoCheck Свойство определяет, должно ли автоматически изме­няться состояние переключателя в результате щелчка на его изображении. По умолчанию значение равно True
FlatStyle Стиль (вид) переключателя. Переключатель может быть обычным (Standard), плоским (Flat) или "всплывающим" (Popup). Стиль определяет поведение переключателя при позиционировании указателя мыши на его изображении
Appearance Определяет вид переключателя. Переключатель может выглядеть обычным образом (Normal) или как кнопка (Button)
Image Картинка, которая отображается в поле компонента
ImageAlign Положение картинки в поле компонента. Картинка может располагаться в центре (MiddleCenter), быть прижата к левой (MiddleLeft) или правой (MiddleRight) границе. Можно задать и другие способы размещения картинки на кнопке (TopLeft, TopCenter, TopPight, BottoinLeft, BottomCenter, BottomRight)
ImageList Набор картинок, используемых для обозначения различных состояний кнопки. Представляет собой объект типа ImageList. Чтобы задать значение свойства, в форму приложения следует добавить компонент ImageList
ImageIndex Номер (индекс) картинки из набора ImageList, которая отображается в поле компонента

CheckedListBox

Компонент CheckedListBox представляет собой список, перед каждым элементом которого находится переключатель CheckBox. Свойства компонента CheckedListBox приведены в табл. 2.6.

Таблица 2.6. Свойства компонента CheckedListBox

Свойство Описание
Items Элементы списка - коллекция строк
Items.Count Количество элементов списка
Sorted Признак необходимости автоматической сортировки (True) списка после добавления очередного элемента
CheckOnClick Способ пометки элемента списка. Если значение свойства равно False, то первый щелчок выделяет элемент списка (строку), а второй устанавливает в выбранное состояние переключатель. Если значение свойства равно True, то щелчок на элементе списка выделяет элемент и устанавливает во включенное состояние переключатель
CheckedItems Свойство CheckedItems представляет собой коллекцию, элементы которой содержат выбранные элементы списка
CheckedItems.Count Количество выбранных элементов списка, переключатели которых установлены в выбранное состояние
CheckedIndices Свойство Checkedlndices представляет собой коллекцию, элементы которой содержат номера выбранных (помеченных) элементов списка
MultiColumn Признак необходимости отображать список в несколько колонок. Количество отображаемых колонок зависит от количества элементов и размера области отображения списка
Location Положение компонента на поверхности формы
Size Размер компонента без (для компонентов типа DropDown и DropDownList) или с учетом (для компонента типа Simple) размера области списка или области ввода
Font Шрифт, используемый для отображения содержимого поля редактирования и элементов списка

 

GroupBox

Компонент GroupBox представляет собой контейнер для других компонентов. Обычно он используется для объединения в группы компонентов RadioButton по функциональному признаку. Свойства компонента GroupBox приведены в табл. 2.7.

Таблица 2.7. Свойства компонента GroupBox

Text Заголовок - текст, поясняющий назначение компонентов, которые находятся в поле компонента GroupBox
Enabled Позволяет управлять доступом к компонентам, находящимся в поле (на поверхности) компонента GroupBox. Если значение свойства равно False, то все находящиеся в поле GroupBox компоненты недоступны
Visible Позволяет скрыть (сделать невидимым) компонент GroupBox и все компоненты, которые находится на его поверхности

 

ImageList

Компонент ImageList представляет собой коллекцию изображений и может использоваться другими компонентами (например, Button или TooiBar) как источник иллюстраций. Компонент является невизуальным, т. е. он не отображается в окне программы но время ее работы. Во время создания формы компонент отобража­ется в нижней части окна редактора формы. Свойства компонента ImageList приведены в табл. 2.8.

Таблица 2.8. Свойства компонента ImageList

Свойство Описание
Images Коллекция изображений (объектов Bitmap)
ImageSize Размер изображений коллекции. Уточняющее свойство Width определяет ширину изображений, Height —высоту
TransparentColor Прозрачный цвет. Участки изображения, окрашенные этим цветом, не отображаются
ColorDepth Глубина цвета - количество байтов, используемых для кодирования цвета точки (пиксела)

Label

Компонент Label предназначен для отображения текстовой информации. Задать текст, отображаемый в поле компонента, можно как во время разработки формы, так и во время работы программы, присвоив нужное значение свойству Text. Свойства компонента приведены в табл. 2.9.

Таблица 2.9. Свойства компонента Label

Свойство Описание
Name Имя компонента. Используется в программе для досту­па к свойствам компонента
Text Отображаемый текст
Location Положение компонента на поверхности формы
Size Размер компонента (поля отображения текста)
Font Шрифт, используемый для отображения текста
ForeColor Цвет текста, отображаемого в поле компонента
BackColor Цвет закраски области вывода текста
TextAlign Способ выравнивания (расположения) текста в поле компонента. Всего существует девять способов расположения текста. На практике наиболее часто используют выравнивание по левой верхней границе (TopLeft), посередине (TopCentre) и по центру (MiddleCenter)
BorderStyle Вид рамки (границы) компонента. По умолчанию граница вокруг поля Label отсутствует (значение свойства равно None). Граница компонента может быть обычной (Fixed3D) или тонкой (FixedSinqle)

 

ListBox

Компонент ListBox представляет собой список, в котором можно выбрать нужный элемент. Свойства компонента приведены в табл. 2.10.

Таблица 2.10. Свойства компонент ListBox

Свойство Описание
Items Элементы, списка - коллекция строк
Items.Count Количество элементов списка
SelectedIndex Номер элемента, выбранного в списке. Если ни один из элементов списка не выбран, то значение свойства равно-1
Sorted Признак необходимости автоматической сортировки (True) списка после добавления очередного элемента
SelectionMode Определяет режим выбора элементов списка: One - только один элемент; MultiSimple— можно выбрать несколько элементов, сделав щелчок на нужных элементах списка; MultiExtended - можно выбрать несколько элементов, сделав щелчок на нужных элементах списка при нажатой клавише <Ctrl>, или выделить диапазон, щелкнув при нажатой клавише <Shift> на первом и последнем элементе диапазона
MultiColumn Признак необходимости отображать список в несколько колонок Количество отображаемых колонок зависит от количества элементов и размера области отображения списка
Location Положение компонента на поверхности формы
Size Размер компонента без (для компонентов типа DropDown и DropDownList) или с учетом (для компонента типа Simple) размера области списка или области ввода
Font Шрифт, используемый для отображения содержимого поля редактирования и элементов списка

MainMenu

Компонент MainMenu представляет собой главное меню программы. Элементы меню - объекты MenuItem. Свойства объекта MenuItem. приведены в табл. 2.11.

Таблица 2.11. Свойства объекта MenuItem

Свойство Описание
Text Название элемента меню
Enabled Признак доступности элемента меню. Если значение свойства равно False, то элемент меню недоступен (в результате щелчка на элементе меню событие Click не происходит, название элемента меню отображается инверсным цветом по отношению к доступному пункту меню)
Checked Признак того, что элемент меню выбран. Если значение свойства равно True, то элемент помечается галочкой. Свойство Checked обычно используется для тех элементов меню, которые применяются для отображения параметров
Shortcut Свойство определяет функциональную клавишу (или комбинацию клавиш), нажатие которой активизирует выполнение команды

 

 



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 108; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.201.95 (0.043 с.)