Проверить и обновить значение у NumericUpDown после каждого введенного с клавиатуры символа
Пользователь вводит число в NumericUpDown с клавиатуры, но проверка этого числа на соответствие нижней и верхней границам происходит только после смены фокуса с numeric'а. Как я могу совершать эту встроенную проверку после каждого введенного символа?
Я хотел бы написать что-то вроде:
private void numericUpDown1_KeyPress(object sender, KeyPressEventArgs e)
{
((NumericUpDown)sender).ValidateEditText();
}
Но метод ValidateEditText() защищенный, а не публичный.
Ответы (1 шт):
Автор решения: Alexander Petrov
→ Ссылка
У NumericUpDown есть метод Validate, его и надо вызывать.
Так как пользователь может изменять значения не только с клавиатуры, но и с помощью мышки, то лучше обрабатывать событие TextChanged. Кстати, в дизайнере оно скрыто у этого контрола. Поэтому сделаем это вручную, например, в событии Load формы.
numericUpDown1.TextChanged += NumericUpDown1_TextChanged;
Код в обработчике события:
private void NumericUpDown1_TextChanged(object sender, EventArgs e)
{
if (numericUpDown1.Value < numericUpDown1.Minimum ||
numericUpDown1.Value > numericUpDown1.Maximum)
numericUpDown1.Validate();
}