Климов Александр Петрович
Шрифт:
При изменении значения элемента
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
. Листинг 3.8
private void Form1_Load(object sender, System.EventArgs e) {
domainUpDown1.Items.Add("Item 1");
domainUpDown1.Items.Add("Item 2");
domainUpDown1.Items.Add("Item 3");
domainUpDown1.Items.Add("Item 4");
domainUpDown1.ReadOnly = true;
}
private void domainUpDown1_SelectedItemChanged(object sender,
System.EventArgs e) {
label1.Text = domainUpDown1.SelectedIndex.ToString;
label2.Text = domainUpDown1.Items[domainUpDown1.SelectedIndex].ToString;
}
Элемент ProgressBar
Элемент управления
ProgressBar
предназначен для индикации процесса выполнения какой-либо операции. Как правило, данный элемент активно используется при выполнении долгих операций, чтобы пользователь получил иллюзию контроля над работой приложения. Чаще всего разработчик оперирует свойствами
Minimum
, Maximum
и Value
. Свойства Minimum
и Maximum
задают минимальное и максимальное значения свойства Value
. А свойство Value
определяет текущее значение индикатора. Как правило, данный элемент отображается в момент начала долгой операции, а после ее завершения делается невидимым с помощью метода
Hide
или свойства Visible
.