Основные сведения. Элементы управления GroupBox, RadioButton, ListBox, ComboBox
Элементы управления GroupBox, RadioButton, ListBox, ComboBox GroupBox (группировка) – позволяет объединять в группу отдельные элементы управления, по периметру выделена линией и вверху содержит текст, определенный в свойстве Text. Рамка группы темнее цвета фона. Обычно группы используются в качестве «родителя» кнопок-переключателей (radio buttons). Все переключатели внутри одной группы взаимоисключающие. Нажатие клавиш со стрелками перемещает фокус ввода и метку выбора между переключателями. RadioButton (переключатель) - элемент управления, который обычно представляет собой кружок, расположенный слева от текста. У класса RadioButton есть свойство Appearance, которому можно задать значение AppearanceButton - тогда элемент управления выглядит как кнопка, а также свойство CheckAlign, позволяющее менять положение кружка относительно текста. Также у RadioButton есть булево свойство Checked, при изменении которого инициируется событие CheckedChanged. По умолчанию значение AutoCheck равно true и если значение AutoCheck равно true и RadioButton «включен», щелчок кнопки ничего не изменит. Если AutoCheck равно true и RadioButton «выключен», щелчок мышью его «включит». Вдобавок, все «родственные» переключатели «выключатся». Таким образом, в каждый момент включен всего лишь один из группы переключателей RadioButton. Обычно наборы взаимоисключающих кнопок-переключателей создаются как потомки GroupBox, хотя «родитель» у них может быть любой. Обратите внимание, что «родственные» переключатели поддерживают ввод с клавиатуры: переключение осуществляется клавишами со стрелками. Если не нужна немедленная реакция на изменения, нет необходимости устанавливать обработчик события CheckedChanged. Однако если потребуется определить, какой из переключателей выбран, надо в цикле проверить свойства Checked всех родственных переключателей. Если AutoCheck равно false, можно обрабатывать событие Click и самостоятельно включать/отключать переключатели. При желании можно сделать включенными несколько переключателей, но пользователя такая ситуация наверняка поставит в тупик. ListBox (список) - содержит прокручиваемый набор объектов. По умолчанию пользователь враве выбрать один (или несколько) элементов, используя клавиатуру или мышь. Выбранные объекты выделяются. Отображаемые элементы списка задаются свойством Items - объектом типа Список также можно заполнить элементами из источника данных — объекта, реа- В свойстве SelectedIndex хранится индекс выбранного в данный момент элемента. Если выбранных элементов нет, его значение равно -1. Свойство SelectedItem представляет фактический выбранный элемент (объект). Оно может быть равным null. При выборе какого-либо элемента списка выражение: Listbox.SelectedItem эквивалентно выражению: Listbox.Items[Listbox.SelectedIndex] Следующие два выражения также равносильны: Listbox.Text и Listbox.SelectedItem.ToString() По умолчанию в списке разрешается выбрать только один элемент. Однако вы вправе разрешить множественное выделение, задав свойству SelectionMode одно из значений перечисления SelectionMode: None, One, MultiSimple или MultiExtended. Вариант MultiSimple слегка меняет вид ListBox, делая различия между выбранными элементами (указанны выделением) и фокусом ввода (указан пунктиром). Фокус ввода перемещают клавишами-стрелками, а пробелом или мышью выбирают или отменяют выбор элементов. Вариант MultiExtended разрешает выбирать только диапазон последовательных элементов, для чего пользователь должен, придерживая клавишу Shift, стрелками выбрать нужный диапазон. В списках с возможностью выбора нескольких элементов используется свойство «только для чтения» SelectedIndices (объект типа ListBoxSelectedlndexCollection) или SelectedItems (объект типа ListBoxSelectedObjectCollection). Объекты ListBoxSelectedIndexCollection и ListBoxSelectedObjectCollection поддерживают индексы и доступ к отдельным элементам по механизму массива целых чисел. Для получения информации об изменении выбранного элемента (или элементов) устанавливают обработчик события OnSelectedIndexChanged или OnSelectedValueChanged. Если нужно, чтобы элементы списка отображались методом, отличным от ToString, можно использовать функцию элемента управления ListBox, называемую отрисовка владельцем (owner draw). В этом случае программа уведомляется посредством событий о необходимости отрисовки элемента списка. При использовании отрисовки владельцем первым делом надо присвоить свойству DrawMode значение DrawMode.OwnerDrawFixed (все пункты списка имеют одну высоту) или DrawMode.OwnerDrawVariable (пункты списка разной высоты). По умолчанию значение свойства DrawMode равно DrawMode.Normal, что возлагает обязанность отрисовки на сам элемент управления. Если все элементы списка одинаковой высоты, ее нужно указать в свойстве ItemHeight. В противном случае необходимо задействовать событие MeasureItem, обработчик которого задается в соответствии с делегатом MeasureItemEventHandler. Предоставляемый сообщением объект MeasureItemEventArgs имеет свойства для чтения Graphics и Index. Первое представляет собой объект типа Graphics, служащий для вычисления высоты элемента, а последнее - числовой индекс элемента списка. Высота и ширина элемента задается свойствами ItemHeight и ItemWidth. При отрисовке владельцем необходимо установить обработчик события DrawItem. Обработчик вызывается для каждого отображаемого элемента, при этом ему передается объект типа DrawItemEventArgs с несколькими свойствами ListBox «только для чтения»: BackColor, ForeColor и Font. Свойство Bounds — это объект типа Rectangle, в котором выполняется отрисовка. Кроме этого, обработчик получает объекты Graphics и Index. Свойство State — это член перечисления DrawItemState, которое указывает, выбран ли элемент, имеет фокус ввода и т. д. Класс DrawItemEventArgs также включает два метода, DrawBackground и DrawFocusRectangle, помогающие в отрисовке элемента списка. ComboBox (Поле со списком) - это комбинация списка и текстового окна. В обычном состоянии отображается только текстовое окно со стрелкой «вниз» справа. По щелчку этой стрелки раскрывается список — внизу появляется окно со списком. По умолчанию пользователь вправе ввести текст в текстовое окно (чтобы выбрать элемент списка), редактировать отображаемый в окне текст или ввести совершенно новый текст. Введенный текст не добавляется автоматически в список — это делается из программы. Большинство программ не разрешают редактирование текста. Такое поведение управляется свойством DropDownStyle — членом перечисления ComboBoxStyle, содержащего следующие члены: - Simple - текст можно редактировать, список постоянно открыт; - DropDown - текст можно редактировать, список отображается по щелчку (по умолчанию); - DropDownList - текст редактировать нельзя, список отображается по щелчку. Для раскрытия списка (или определения его положения в текущий момент) можно использовать свойство DroppedDown. Как и в ListBox, в программе можно задействовать свойства SelectedIndex и SelectedItem для определения или получения выбранного элемента. Поля со списком не поддерживают множественный выбор. Выбранный элемент отображается в текстовом окне элемента управления и доступен через свойство Text. В момент ввода текста в поле текстового окна свойство SelectedIndex равно -1, a SelectedItem - null. Как и в ListBox, для обнаружения момента изменения выбранного элемента задействуют обработчики событий SelectedIndexChanged или SelectedValueChanged. Событие TextChanged информирует об изменении текста в верхней части ComboBox – из-за выбора другого элемента или ввода текста. Элементы управления для работы с числами и датой
|