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

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

Переключатели и группирующие рамки

Тип RadioButton (переключатель) можно воспринимать, как несколько видоизмененный флажок при этом сходство между этими типами подчеркивается почти полным совпадением наборов членов. Между типами RadioButton и CheckBox существуют лишь два важных различия: в RadioButton предусмотрено событие CheckedChanged (возникающее при изменении значения Checked ), а кроме того, RadioButton не поддерживает свойство ThreeState и не может принимать состояние Indeterminate (не определено).

Переключатели всегда используются в группах, которые рассматриваются как некое единое целое. Внутри группы переключателей одновременно может быть выбран только один переключатель. Для группировки переключателей в группы используется тип GroupBox.

И флажок ( CheckBox ), и переключатель ( RadioButton ) поддерживают свойство Checked, при помощи которого очень удобно получать информацию о состоянии соответственно флажка и переключателя. Однако если есть необходимость задействовать дополнительное третье состояние флажка (не определено - Indeterminate ), то придется вместо Checked использовать свойство CheckState и значения из одноименного перечисления CheckState.

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

Типы Button, CheckBox и RadioButton являются производными от ButtonBase, и их можно определить как некие разновидности кнопок. К членам семейства списков относятся CheckedListBox (список с флажками), ListBox (список) и ComboBox (комбинированный список).

Элемент управления CheckedListBox (список с флажками) позволяет помещать обычные флажки внутри поля с полосами прокрутки.

Кроме того, в элементе управления CheckedListBox предусмотрена возможность использования нескольких столбцов. Для этого достаточно установить значение true для свойства MultiColumn.

CheckedListBox наследует большинство своих возможностей от типа ListBox. To же самое справедливо и в отношении класса ComboBox. Наиболее важные свойства System.Windows.Forms.ListBox представлены в таблице 7.8.

Таблица 7.8. Свойства класса ListBox
Свойство Назначение
ScrollAlwaysVisible Определяет, будет ли полоса прокрутки выводиться всегда
Selectedlndex Индекс выделенного в настоящий момент элемента в списке (если такой имеется). Если ни один элемент не выделен, то возвращается значение -1
SelectedIndices Набор индексов выделенных в настоящий момент элементов в списке. Если не выделен ни один элемент, то возвращается пустой набор
SelectedItem Значение выделенного в настоящий момент элемента. Если ни один из элементов не выделен, то возвращается null
SelectedItems Возвращает коллекцию значений выделенных элементов (для списков, в которых допускается выбор нескольких значений)
SelectionMode Определяет число элементов, которые возможно выбрать в списке одновременно. Для этого свойства используются значения из перечисления SelectionMode
Sorted Определяет, будут ли элементы в списке упорядочены (по алфавиту) или нет
TopIndex Возвращает индекс первого видимого элемента в списке

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

Комбинированные списки

Как и списки (объекты ListBox ), комбинированные списки (объекты ComboBox ) позволяют пользователю производить выбор из списка заранее определенных элементов. Однако у комбинированных списков есть одно существенное отличие от обычных: пользователь может не только выбрать готовое значение из списка, но и ввести свое собственное. Класс ComboBox наследует большинство своих возможностей от класса ListBox (который, в свою очередь, является производным от Control ), однако в нем предусмотрены и собственные важные свойства, представленные в таблице 7.9.

Таблица 7.9. Свойства ComboBox
Свойство Назначение
DroppedDown "Раскрывающийся вниз": определяет, будет ли список ниспадающим
MaxDropDownltems Определяет максимальное количество элементов, которое будет показано в нижней части ниспадающего списка. Допустимые значения - от 1 до 100
MaxLength Определяет максимальную длину текста, который пользователь может ввести в ComboBox
Selectedlndex Определяет индекс выделенного элемента ComboBox. Если ни один элемент не выделен, возвращается значение -1
Selectedltem Возвращает ссылку на объект выделенного элемента ComboBox
SelectedText Возвращает выделенный текст в поле редактирования ComboBox
SelectionLength Определяет длину (в символах) выделенного текста в поле редактирования ComboBox
Style Позволяет получить или установить стиль ComboBox. Для этого свойства используются значения из перечисления ComboBoxStyle
Text Позволяет получить доступ к тексту в поле редактирования. При работе с ComboBox это унаследованное свойство используется чаще всех остальных

Стиль для ComboBox можно настроить при помощи свойства Style, для которого используются значения из перечисления ComboBoxStyle (таблица 7.10).

Таблица 7.10. Значения перечисления ComboBoxStyle
Значение Описание
DropDown Пользователь может вводить значения в поле редактирования. Для отображения списка пользователь должен нажать на кнопку со стрелкой, направленной вниз ( Arrow Button )
DropDownList Пользователь не может вводить значения в поле редактирования. Для отображения списка пользователь должен нажать на кнопку со стрелкой, направленной вниз ( Arrow Button )
Simple Пользователь может вводить значения в поле редактирования. Список значений виден всегда

Порядок перехода по Tab

Если на форме размещено несколько элементов управления, то пользователи обычно ожидают, что между ними можно будет перемещаться с помощью клавиши Tab. Часто бывает необходимо после размещения элементов управления настроить порядок перехода между ними. Для этого используются два свойства (унаследованные от базового класса Control и поэтому общие для всех элементов управления): TabStop и Tablndex. Для свойства TabStop используются только два значения: true и false. Если для TabStop установлено значение true, то к этому элементу управления можно будет добраться с помощью клавиши Tab. Если же установлено значение false, то участвовать в переходах по Tab этот элемент управления не будет. Если элемент управления TabStop имеет значение true, то очередность перехода можно настроить с помощью свойства Tablndex:

В Visual Studio.NET предусмотрено средство, при помощи которого можно быстро настроить порядок перехода для элементов управления на форме. Это средство называется Tab Order Wizard и оно доступно из меню View (View > Tab Order). Чтобы изменить значения TabIndex для каждого элемента управления, достаточно просто щелкать мышью на элементах управления в выбранном нами порядке перехода. Для элементов управления, помещенных в группирующую рамку, Tab Order Wizard создает отдельную последовательность перехода.

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

В пространстве имен System.Windows.Forms предусмотрен элемент управления, при помощи которого пользователь может выбрать дату или диапазон дат, используя дружественный и удобный интерфейс. Это элемент управления MonthCalendar.

Наиболее важные свойства MonthCalendar представлены в табл. 7.11.

Таблица 7.11. Свойства MonthCalendar
Свойство Назначение
BoldedDates Массив объектов DateTime, выделенных подсветкой
CalendarDimensions Определяет количество выводимых строк и столбцов
FirstDayOfWeek Определяет, с какого дня будет начинаться неделя в MonthCalendar
MaxDate Самая поздняя дата, которую разрешается выбрать пользователю (по умолчанию ограничений нет)
MaxSelectionCount Максимальное количество дат, которое одновременно может выбрать пользователь
MinDate Самая ранняя дата, которую разрешается выбрать пользователю (по умолчанию ограничений нет)
MonthlyBoldedDates Массив выделенных подсветкой объектов DateTime для месяца
SelectionRange Диапазон выделенных объектов
SelectionEnd Самая поздняя дата в диапазоне выделенных объектов
SelectionStart Самая ранняя дата в диапазоне выделенных объектов
ShowToday Определяет, будет ли MonthCalendar выводить информацию о текущей дате
ShowTodayCircle Определяет, будет ли MonthCalendar выводить информацию о текущей дате в нижней части и выделять ее в календаре обводкой
ShowWeekNumbers Определяет, будет ли MonthCalendar отображать номера недель справа от каждой строки
TodayDate Дата, которая будет считаться MonthCalendar сегодняшней. По умолчанию TodayDate - это системная дата на момент создания объекта MonthCalendar
TodayDateSet Определяет, можно ли пользователю по своему усмотрению выбирать сегодняшнюю дату. Если для этого свойства установлено значение true, пользователь может выбрать в качестве сегодняшней ( TodayDate ) любое число

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

Можно получить дату, выбранную пользователем в MonthCalendar, при помощи свойства SelectionStart. Это свойство возвращает ссылку на объект DateTime, которая хранится в специальной переменной ( d ) При помощи набора свойств типа DateTime можно извлечь всю необходимую информацию в нужном нам формате.

При помощи свойств Month, Day и Year можно извлечь из объектов DateTime нужную информацию и сформировали текстовые строки. Это вполне допустимый подход. Дело в том, что дату в необходимом текстовом формате проще получить из DateTime при помощи специальных "форматирующих" свойств самих объектов DateTime. Набор таких свойств (и некоторые методы) представлен в таблице 7.12.

Таблица 7.12. Члены класса DateTime
Член Назначение
Date Позволяет получить информацию о дате (дата всегда отсчитывается от полуночи)
Day, Month, Year Позволяют получить соответственно день, месяц и число из текущего объекта DateTime
DayOfWeek Возвращает день недели для объекта DateTime
DayOfYear Возвращает номер дня в году для объекта DateTime
Hour, Minute, Second, Millisecond Возвращают информацию о часе, минутах, секундах и миллисекундах для объекта DateTime
MaxValue, MinValue Возвращают минимальное и максимальное значения для DateTime
Now, Today Эти два статических свойства типа DateTime позволяют получить информацию о текущей дате и времени ( Now ) или только о текущей дате ( Today )
Ticks Позволяет получить счетчик "тиков" (с интервалом в 100 наносекунд) для объекта DateTime
ToLongDateString( ), ToLongTimeString( ), ToShortDateString( ), ToShortTimeString( ) Преобразуют текущее значение объекта DateTime в разные виды текстового представления

При помощи вышеперечисленных членов можно значительно упростить вывод текстовой информации о дате.

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

Назначение элемента управления Panel (панель) - с его помощью можно объединить прочие элементы управления на форме. Panel происходит от базового класса ScrollableControl и поддерживает полосы прокрутки.

Элементы управления Panel обычно используются для экономии пространства на форме. Например, если элементы управления, которые планируем разместить на форме, на ней не умещаются, то можно поместить их внутрь Panel и установить для свойства AutoScrol1 объекта Panel значение true. В результате пользователь получит возможность доступа к "не вмещающимся" элементам управления с помощью полос прокрутки.

Всплывающие подсказки (ToolTips)

Большинство приложений с современным пользовательским интерфейсом поддерживают всплывающие подсказки. В приложениях .NET эта возможность реализуется при помощи типа System.Windows.Forms.ToolTip. ToolTip (всплывающие подсказки) - это небольшие окна с текстом, появляющиеся при наведении указателя мыши на элемент управления на форме. Наиболее важные члены класса ToolTip представлены в таблице 7.13.

Таблица 7.13. Члены класса ToolTip
Член Назначение
Active Определяет, будет ли всплывающая подсказка активной. Возможность отключить всплывающие подсказки может быть полезной, например, если в приложении предусмотрено два варианта интерфейса: для обычных и для опытных пользователей
AutomaticDelay Позволяет получить или установить время задержки (в миллисекундах) при появлении подсказки
AutoPopDelay Время (в миллисекундах), в течение которого подсказка остается видимой, если указатель мыши неподвижен и находится в области, занимаемой соответствующим элементом управления. По умолчанию это значение равно 10 значениям AutomaticDelay
GetTooltip( ) Возвращает текст подсказки
InitialDelay Время (в миллисекундах), в течение которого указатель должен оставаться неподвижным в соответствующей области для появления подсказки. Значение по умолчанию равно значению AutomaticDelay
ReshowDelay Время (в миллисекундах), в течение которого появится другая подсказка при перемещении указателя мыши от одного элемента управления к другому. По умолчанию это значение равно 1/5 от значения AutomaicDelay
SetToolTip( ) Ассоциирует подсказку с элементом управления

Для того чтобы настроить использование всплывающих подсказок для элементов управления можно сделать это с помощью графических средств Visual Studio.

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

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

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

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

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