Событие NumericUpDown ValueChanged не работает при вводе значений

Событие не активируется при вводе значений с помощью цифр на клавиатуре. Он активируется только при использовании стрелок вверх и вниз. Я хочу, чтобы он активировался при каждом нажатии на клавиатуре, например, при изменении текста в текстовом поле.

Я пробовал несколько вещей, но пользователю пришлось нажать Enter для активации события. Я не хочу этого.

Оно должно быть таким же, как событие текстового поля. Есть идеи ? или другой инструмент может быть?


person Ozan Ayten    schedule 25.12.2013    source источник


Ответы (1)


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

  • При использовании стрелок вверх/вниз элемента управления, как вы упомянули.
  • Когда элемент управления теряет фокус после изменения значения с помощью ввода с клавиатуры.
  • При использовании клавиш со стрелками вверх/вниз на клавиатуре.

Вместо ValueChanged вы можете использовать событие KeyPress, которое срабатывает при каждом нажатии клавиши на клавиатуре. (но имейте в виду, что это событие срабатывает только при нажатии цифровой клавиши на клавиатуре)

private void numericUpDown1_KeyPress(object sender, KeyPressEventArgs e)
{

}
person Kurubaran    schedule 25.12.2013
comment
Спасибо, я не знал об объекте нажатия клавиши. Я объединил событие нажатия клавиши с измененным значением, поэтому это решило мою проблему. Я добавлю решение, которое я объединил в качестве ответа. - person Ozan Ayten; 25.12.2013
comment
Я объединил эти события, но это не работает в хорошем порядке. Также я обнаружил, что событие нажатия клавиши вызывает затруднения с numericUpDown. Он изменяет значения, меняя фокус на порядок букв на numericUpDown. - person Ozan Ayten; 25.12.2013
comment
@OzanAyten Что вы пытаетесь сделать в рамках события ValueChanged? Какая у тебя логика? Почему вы хотите использовать элемент управления NumericUpDown? Вы не можете использовать текстовое поле? вы также можете запретить пользователю вводить нечисловые символы в текстовом поле. - person Kurubaran; 25.12.2013
comment
Я буду использовать его для ввода денежных значений с двумя десятичными знаками. Я использую numericUpDown исключительно по визуальной причине. Когда вы сравниваете textbox и numericupdown. Вы будете знать, куда вводить числовое значение с первого взгляда. - person Ozan Ayten; 25.12.2013
comment
Ах, для логики, я хочу проверить, если значение изменилось, кнопка «Сохранить» будет включена. Но если значение возвращается к тому же значению. Он должен быть отключен. - person Ozan Ayten; 25.12.2013
comment
@OzanAyten Не можете ли вы сделать его только для чтения (установите для свойства значение true), что позволит пользователю изменять значение, только нажимая вверх / вниз на элементе управления или клавишах вверх / вниз на клавиатуре. в обоих случаях сработает событие ValueChanged. - person Kurubaran; 25.12.2013
comment
Я не хочу терять легкий доступ к контенту. Например, копировать/вставлять значения. Использование клавиатуры для легкого изменения значений и т. д. Кроме того, числа сильно различаются (от 0,01 до 99999,99 и т. д.). - person Ozan Ayten; 25.12.2013