Как предотвратить ввод ключа с помощью элемента управления 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;
    }
Другие вопросы по тегам