Как предотвратить ввод ключа с помощью элемента управления NumericUpDown?
У меня есть числовой элемент управления downdown для winform, и я заметил, что во время тестирования не только у вас есть возможность изменять значение, нажимая клавиши вверх и вниз, но и просто вводить значения с клавиатуры.
Я не хочу этого Я только хочу, чтобы пользователь мог изменять значение numericupdown только с помощью кнопок вверх и вниз в поле.
Пока я просто не могу найти решение.
Кто-нибудь знает как это сделать?
3 ответа
Чтобы запретить пользователю редактирование, установите для свойства Readonly значение true.
updown.ReadOnly = true;
Для большей адаптации вы можете обратиться к этому ответу.
Звучит плохо для пользовательского опыта в зависимости от диапазона значений, которые вы разрешаете.
Для этого вам нужно создать элемент управления с наследниками от NumericUpDown и переопределить методы OnKeyPress/OnKeyDown.
С помощью updown.ReadOnly = True;
не работает для меня Кажется, это повторная ошибка. Но ловить любые изменения и затем отменять это делает. Для этого свяжем функцию updown_ValueChanged()
к updown.ValueChanged
приписывать.
decimal spin = 1;
private void updown_ValueChanged(object sender, EventArgs e)
{
if (updown.ReadOnly)
{
if (updown.Value != spin)
{
updown.Value = spin;
}
}
else spin = updown.Value;
}