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



, даже если результат выходит за диапазон, определенный свойствами >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.