Опубликован: 09.09.2008 | Доступ: свободный | Студентов: 2107 / 346 | Оценка: 4.30 / 4.12 | Длительность: 08:30:00
ISBN: 978-5-94774-601-3
Самостоятельная работа 7:

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

Цель работы: Изучить основные элементы управления Windows -форм, их свойства и методы, а также получить практические навыки в разработке Windows -форм с элементами контроля

Общие сведения

Классы, представляющие графические элементы управления, находятся в пространстве имен System.Windows.Forms. С их помощью обеспечивается реакция на действия пользователя в приложении Windows Forms. Классы элементов управления связаны между собой достаточно сложными отношениями наследования. Общая схема таких отношений представлена на рисунке 7.1.

Класс Control, как общий предок, обеспечивает все производные классы общим набором важнейших возможностей. В числе этих возможностей можно перечислить события мыши и клавиатуры, физические размеры и местонахождение элемента управления (свойства Height, Width, Left, Right, Location ), установку цвета фона и цвета переднего плана, выбор шрифта и т.п.

При создании приложения можно добавить элементы управления на форму при помощи графических средств Visual Studio. Обычно достаточно выбрать нужный элемент управления в окне ToolBox и поместить его на форме. Visual Studio автоматически сгенерирует нужный код для формы. После этого можно изменить название элемента управления на более содержательное (например, вместо button1, предлагаемого по умолчанию, - buttonPrimer ) Visual Studio позволяет не только размещать на форме элементы управления, но и настраивать их свойства. Для этого достаточно щелкнуть на элементе управления правой кнопкой мыши и в контекстном меню выбрать Properties (Свойства).

Иерархия элементов управления Windows Forms

увеличить изображение
Рис. 7.1. Иерархия элементов управления Windows Forms

Все изменения, которые необходимо произвести в открывшемся окне (рисунок 7.2), будут добавлены в код метода InitializeComponents().

Настройка элементов управления средствами Visual Studio

Рис. 7.2. Настройка элементов управления средствами Visual Studio

То же самое окно позволяет настроить не только свойства данного элемента управления, но и обработку событий этого элемента. Перейти в список событий можно при помощи кнопкив закладке Properties (рисунок 7.3). Можно выбрать в списке нужное событие и рядом с ним сделать двойной щелчок или ввести имя метода или выбрать метод из списка.

Настройка обработчиков событий

Рис. 7.3. Настройка обработчиков событий

После задания имени метода или двойного щелчка Visual Studio сгенерирует заготовку для обработчика события.

Рассмотрим основные элементы управления Windows -форм.

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

Элемент управления TextBox (текстовое окно) предназначен для хранения текста (одной или нескольких строк). При желании текст в TextBox может быть настроен как "только для чтения", а в правой и нижней части можно поместить полосы прокрутки.

Класс TextBox происходит непосредственно от класса TextBoxBase, обеспечивает общими возможностями как TextBox, так и RichTextBox. Свойства, определенные в TextBoxBase, представлены в таблице 7.1.

Таблица 7.1. Свойства TextBoxBase
Свойство Назначение
AcceptsTab Определяет, что будет производиться при нажатии на клавишу Tab: вставка символа табуляции в само поле или переход к другому элементу управления
AutoSize Определяет, будет ли элемент управления автоматически изменять размер при изменении шрифта на нем
BackColor, ForeColor Позволяют получить или установить значение цвета фона и переднего плана
HideSelection Позволяет получить или установить значение, определяющее, будет ли текст в TextBox оставаться выделенным после того, как этот элемент управления будет выведен из фокуса
MaxLength Определяет максимальное количество символов, которое можно будет ввести в TextBox
Modified Позволяет получить или установить значение, определяющее, был ли текст в TextBox изменен пользователем
Multiline Указывает, может ли TextBox содержать несколько строк текста
Readonly Помечает TextBox как "только для чтения"
SelectedText, SelectionLength Содержат выделенный текст (или определенное количество символов) в TextBox
SelectionStart Позволяет получить начало выделенного текста в TextBox
Wordwrap Определяет, будет ли текст в TextBox автоматически переноситься на новую строку при достижении предельной длины строки

В TextBoxBase также определено множество методов: для работы с буфером обмена ( Cut, Copy и Paste ), отменой ввода ( Undo ) и прочими возможностями редактирования ( Clear, AppendText и т. п.).

Из всех событий, определенных в TextBoxBase, наибольший интерес представляет событие TextChange. Это событие происходит при изменении текста в объекте класса, производном от TextBoxBase. Например, его можно использовать для проверки допустимости вводимых пользователем символов (например, предположим, что пользователь должен вводить в поле только цифры или, наоборот, только буквы).

Свойства, унаследованные от Control и от TextBoxBase, определяют большую часть возможностей TextBox. Свойств, определенных непосредственно в классе TextBox, не так уж и много. Они представлены в таблице 7.2.

Таблица 7.2. Свойства, определенные в классе TextBox
Свойство Назначение
AcceptsReturn Позволяет определить, что происходит, когда пользователь при вводе текста нажал на Enter. Варианта два: либо в TextBox начинается новая строка текста, либо активизируется кнопка по умолчанию на форме
CharacterCasing Позволяет получить или установить значение, определяющее, будет ли изменяться регистр вводимых пользователем символов
PasswordChar Позволяет выбрать символ, используемый для отображения вводимых пользователем данных (в поле для ввода пароля)
ScrollBars Позволяет получить или установить значение, определяющее, будут ли в TextBox с несколькими строками присутствовать полосы прокрутки
TextAlign Позволяет определить выравнивание текста в TextBox (используются значения из перечисления HorizontalAlignment )

Значения перечисления HorizontalAlignment представлены в таблице 7.3.

Таблица 7.3. Значения перечисления HorizontalAlignment
Значение Описание
Center Выравнивание по центру
Left Выравнивание по левому краю
Right Выравнивание по правому краю

Класс Button

Кнопка ( button ) - это самый простой из всех элементов управления и при этом наиболее часто используемый. Можно сказать, что кнопка - это возможность принять ввод (щелчок кнопкой мыши или набор на клавиатуре) наиболее простым способом. Непосредственный предок класса System.Windows.FormButton в иерархии классов .NET - это класс ButtonBase, обеспечивающий общие возможности для целой группы производных от него элементов управления (таких как Button, CheckBox и RadioButton ). Некоторые свойства ButtonBase представлены в таблице 7.4.

Таблица 7.4. Свойства ButtonBase
Свойство Назначение
FlatStyle Позволяет настроить "рельефность" кнопки. Используются значения из перечисления FlatStyle
Image Позволяет задать изображение, которое будет выводиться на кнопке (при этом можно указать точное местонахождение изображения). Фоновый рисунок лучше настраивать при помощи свойства BackgroundImage, определенного в базовом классе Control
ImageAlign Позволяет определить выравнивание изображения, размещенного на кнопке. Используются значения из перечисления ContentAlignment
Imagelndex, ImageList Эти свойства используются для работы с набором изображений (объектом ImageList ), выводимых на кнопке
IsDefault Определяет, будет ли эта кнопка являться кнопкой по умолчанию (то есть срабатывать при нажатии на Enter )
TextAlign Позволяет получить или установить выравнивание текста на кнопке. Также используются значения из перечисления ContentAlignment

Сам класс Button не определяет каких-либо дополнительных возможностей помимо унаследованных от ButtonBase, за единственным, но существенным исключением свойства DialogResult. Это свойство позволяет возвращать значение при закрытии диалогового окна, например, при нажатии кнопок ОК или Cancel (Отменить).

В подавляющем большинстве случаев выравнивание текста, размещенного на кнопке, производится по центру, так что текст будет размещен строго посередине кнопки. Однако если нам по каким-то причинам необходимо использовать другой стиль выравнивания, в нашем распоряжении - свойство TextAlign, определенное в классе ButtonBase. Для TextAlign используются значения из перечисления ContentAlignment (таблица 7.5). Значения из того же перечисления используются и для определения положения изображения на кнопке.

Таблица 7.5. Значения перечисления ContentAlignment
Значение Описание (выравнивание)
BottomCenter По нижнему краю кнопки, относительно боковых краев - посередине
BottomLeft Но нижнему краю кнопки, слева
BottomRight По нижнему краю кнопки, справа
MiddleCenter По центру кнопки
MiddleLeft Относительно верхнего и нижнего краев - по центру, относительно боковых краев - слева
MiddleRight Относительно верхнего и нижнего краев - по центру, относительно боковых краев - справа
TopCenter По верхнему краю кнопки, относительно боковых краев - посередине
TopLeft По верхнему краю кнопки, слева
TopRight По верхнему краю кнопки, справа

Флажки

Для флажка (тип CheckBox ) предусмотрено три возможных состояния. Как и тип Button, CheckBox наследует большую часть своих возможностей от базовых классов Control и ButtonBase. Однако в этом классе существуют и свои собственные члены, обеспечивающие дополнительные уникальные возможности. Наиболее важные свойства CheckBox представлены в таблице 7.6.

Таблица 7.6. Свойства класса CheckBox
Свойство Назначение
Appearance Настраивает вид флажка. Для этого свойства используются значения из перечисления Appearance
AutoCheck Позволяет получить или установить значение, определяющее, будут ли значения Checked и CheckState, а также внешний вид флажка автоматически изменяться при щелчке на нем
CheckAlign Позволяет установить горизонтальное и вертикальное выравнивание собственно флажка (квадратика) в элементе управления CheckBox. Используются значения из перечисления ContentAlignment
Checked Возвращает значение типа bool, представляющее текущее состояние флажка (выбран или не выбран) Если для свойства ThreeState установлено значение true, то свойство Checked будет возвращать true как для явно выбранного флажка, так и для того флажка, для которого установлено значение "не определено" ( indeterminate )
CheckState Позволяет получить или установить значение флажка (установлен - не установлен - не определено), используя не true и false, как в Checked, а три значения из перечисления CheckState. Обычно используется, если свойство ThreeState для флажка имеет значение true (то есть он допускает три значения).
ThreeState Определяет, будут ли для флажка использоваться три значения (из перечисления CheckState ) или только два

Возможные состояния флажка ( Indeterminate можно использовать только тогда, когда для свойства ThreeState установлено значение true ) представлены в таблице 7.7.

Таблица 7.7. Значения перечисления CheckState
Значение Описание
Checked Флажок установлен
Indeterminate Значение не определено (обычно флажок выглядит как "серый", затененный)
Unchecked Флажок снят

Состояние "значение не определено" ( indeterminate ) может быть установлено, например, для верхнего элемента иерархии, в которой для одной части подчиненных элементов флажок установлен, а для другой - снят.

Анна Иваненко
Анна Иваненко

В самостоятельной работе 8 написано: "В пункте "Server name" задаем имя сервера, которое необходимо узнать у преподавателя". Где узнать это имя?

Вячеслав Шестивский
Вячеслав Шестивский

Вроде всё выставил верно, но при клике на "Сотрудники", меню из FormEmplyee не вставляется в меню главного окна а висит в дочернем окне снизу.  Как поправить?