Как я могу получить текущий номер, который находится в элементе управления NumericUpDown (на экране), когда пользователь редактирует его с помощью клавиатуры?

#winforms #numericupdown

#winforms #numericupdown

Вопрос:

У меня есть средство выбора NumericUpDown, для которого установлен диапазон допустимых лет, по умолчанию для текущего года.

Пользователь может отредактировать номер в поле с помощью клавиатуры: скажем, если номер там 2011 для начала, они могут нажать пробел, и число в поле на экране будет 201. Однако, насколько я знаю, свойство value элемента управления никогда не будет считывать число ниже установленного мной минимума (в данном случае 1900).

Мне нужен способ получить номер, который в данный момент находится в поле на экране, независимо от того, находится ли он в моем допустимом диапазоне или нет. Кто-нибудь знает, как это сделать?

Спасибо!

Ответ №1:

Вы можете использовать NumericUpDown.Text свойство для получения текущего текста, а затем выполнить синтаксический int анализ. Может показаться, что свойство не существует, но оно есть.

Текст не влияет на внешний вид элемента управления NumericUpDown; следовательно, он скрыт в конструкторе и от IntelliSense.

Комментарии:

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

2. Кроме того, я раньше не сталкивался с «скрытым» методом, подобным этому.

3. @IBC сначала я тоже могу вспомнить.

4. Это полезно знать. Я также искал свойство. По крайней мере, теперь я знаю, что есть причина, по которой я не смог ее найти. 🙂