Чтение онлайн

ЖАНРЫ

Программирование КПК и смартфонов на .NET Compact Framework

Климов Александр Петрович

Шрифт:
Листинг 3.5

// Получим выделенный пункт с помощью SelectedIndex

string selItem = (string)cmbCats.Items[cmbCats.SelectedIndex];

MessageBox.Show(selItem);

// Второй способ - получим пункт с помощью

SelectedItem string selItem = cmbCats.SelectedItem.ToString;

MessageBox.Show(selItem);

В полной версии .NET Framework у элемента

ComboBox
для свойства
DropDownStyle
можно задавать значения
Simple
,
DropDownList
или
DropDown
. В .NET Compact
Framework
значение
Simple
не используется. До выхода .NET Compact Framework 2.0
также не поддерживалось и значение
DropDown
. Кроме того, по умолчанию в .NET Compact Framework применяется значение
DropDownList
, тогда как в полной версии .NET Framework по умолчанию используется стиль
DropDown
. Также не поддерживаются многие методы из основной версии библиотеки. В .NET Compact Framework 2.0 у поля со списком появилась поддержка методов
BeginUpdate
и
EndUpdate
, которые позволяют избежать мерцания при загрузке большого числа элементов.

ВНИМАНИЕ

Внешний вид и поведение элемента ComboBox в смартфонах немного отличается от аналогичных элементов в КПК. Более подробно об отличиях будет рассказано в соответствующей главе.

Элемент ListBox

Элемент

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

Элементы

ComboBox
и
ListBox
имеют почти одинаковый набор свойств и методов. В листинге 3.6 показано, как можно программно добавить несколько строк в список
ListBox
.

Листинг 3.6

lstFruit.Items.Add("Яблоко");

lstFruit.Items.Add("Груша");

lstFruit.Items.Add("Слива");

lstFruit.Items.Add("Персик");

Свойство

SelectedIndex
содержит порядковый номер выбранного элемента списка. Если указать этот индекс в коде приложения, то выбранный элемент будет немедленно выделен в списке соответствующим цветом. Если никакой элемент не выбран, то свойство
SelectedIndex
имеет значение -1. Также класс поддерживает свойство
SelectedItem
, которое соответствует одноименному свойству класса
ComboBox
.

Из часто используемых свойств элемента

ListBox
в полной версии NET Framework можно выделить свойство
MultiColumn
, которое не поддерживается в .NET Compact Framework. В нем отсутствует горизонтальная полоска прокрутки, даже если строки текста не умещаются в списке полностью. Также не поддерживается многострочное выделение, поэтому пользователь может выбрать только один элемент списка.

Элемент NumericUpDown

Элемент

NumericUpDown
позволяет создавать счетчик с числовым полем ввода. Такой элемент интерфейса помогает пользователю быстро выбрать число из заданного диапазона. Элемент может работать только с целыми числа типа
Integer
. Десятичные значения округляются.

Разработчик управляет поведением элемента

NumericUpDown
при помощи свойств
Minimum
,
Maximum
,
Value
и
Increment
. Свойства
Minimum
и
Maximum
определяют максимальное и минимальное значения элемента. Свойство
Value
содержит текущее значение в поле ввода. Свойство
Increment
определяет величину увеличения или уменьшения значения в поле, когда пользователь нажимает кнопки со стрелками. Текущее значение всегда увеличивается и уменьшается на значение свойства
Increment
, даже если результат выходит за диапазон, определенный свойствами
Minimum
и
Maximum
.

Пользователь также может изменить свойство

Value
, просто указав соответствующее значение в поле. Если это значение находится в интервале между
Minimum
и
Maximum
,
тогда свойства
Value
и
Text
изменятся в соответствии с введенным значением. Если новое значение выходит за рамки заданных значений, то свойство
Text
отображает введенное число, а свойство
Value
принимает значение, которое приписано свойству
Maximum
. Чтобы запретить пользователю указывать числа в поле ввода, нужно для свойства
ReadOnly
задать значение
True
.

При изменении значения элемента

NumericUpDown
инициируется событие
ValueChanged
. Оно возникает только в том случае, если значение меняется программно или когда пользователь нажал кнопки со стрелками. При вводе числа событие не инициируется. В листинге 3.7 продемонстрирован пример использования элемента
NumericUpDown
и обработки события
ValueChanged
.

Листинг 3.7

private void numericUpDown1_ValueChanged(object sender, EventArgs e) {

 int year = (int)this.numericUpDown1.Value;

 this.lblNote.Text = "Вы выбрали " + year.ToString + "год";

}

На рис. 3.5 показано, как функционирует элемент

NumericUpDown
.

Рис. 3.5. Выбор года при помощи элемента NumericUpDown

При работе с элементом

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

Стоит проиллюстрировать эту ситуацию. Итак, у нас установлено текущее значение, равное 1992. Значение свойства

Increment
равно 6, а максимум ограничен значением 2006. Последовательные нажатия стрелки вверх доведут значение с 1992 до 2006. Итак, максимальное значение достигнуто. Теперь надо нажать кнопку со стрелкой, направленной вниз. Казалось бы, на экране должно быть показано число 2000 (2006-6), но следует учитывать, что перед превышением максимального значения счетчик запомнил число 2004. Именно от него будет отсчитываться разница, и на экране будет отображено число 1998.

Элемент DomainUpDown

Элемент

DomainUpDown
позволяет создавать счетчик с текстовым полем ввода. Этот элемент похож на элемент
NumericUpDown
, а его функциональность схожа с теми возможностями, которые предоставляют
ComboBox
или
ListBox
. Но в элементе
DomainUpDown
вместо чисел используются строки. Этот элемент очень широко применяется для построения интерфейса, так как он весьма компактен и не занимает много места на маленьком экране карманного компьютера. Следует учитывать, что пользователь не может увидеть весь список. Если свойство
ReadOnly
имеет значение
True
, то пользователь может выбирать только заранее заданные строки из списка. Если это свойство имеет значение
False
, то пользователь сможет добавить свой текст в поле ввода. Впрочем, напечатанный текст все равно не войдет в список.

Так же как и элемент

NumericUpDown
, данный элемент управления содержит текстовое поле и две кнопки со стрелками с правой стороны. Пользователь может использовать эти стрелки для прокрутки списка строк или ввести в поле свой текст, если свойство
ReadOnly
имеет значение
False
.

При создании объекта свойство

SelectedIndex
имеет значение -1, показывающее, что ни один элемент списка пока еще не выбран. Если нужно выделить тот или иной пункт списка при загрузке элемента, то в свойстве
SelectedIndex
нужно указать соответствующий порядковый номер. В листинге 3.8 приведен пример, иллюстрирующий программное добавление строк в список и методику обработки события
SelectedItemChanged
.

Поделиться с друзьями: