Глюк с удалением значения в NumericUpDown

Имеем NumericUpDown, из которого по клике на кнопку берется значение и используется. Если мы просто вводим в него значения и меняем их - все в порядке. Но если мы удаляем значение и оставляем его пустым - компонент начинает вести себя очень странно. На форме остается пустое значение, а в свойстве Value сохраняется предыдущее значение, которое было до удаления.

Если мы просто введем 0, то все в порядке. Но пользователям сложно понять, почему нельзя просто удалить значение. Казалось бы решение трудности очевидно - привяжемся на событие изменения значения, проверим строку в свойстве Text на пустоту и проставим в Value значение 0.

if (String.IsNullOrEmpty(someMyNumericUpDown.Text))
{
    rynocKvMNumericUpDown.Value = 0;
}

Но ни фига! При удалении значения NumericUpDown клавишей delete событий ValueChanged и KeyPress не происходит. Они происходят только в том случае, если в компонент вводятся цифры.

Теоретически есть еще событие TextChanged, но в списке событий VisualStudio оно почему-то не отображается.

Так что я пока повесил проверку на клик по кнопке, при котором собственно и берется значение NumericUpDown.


Комментарии

Глюк с удалением значения в NumericUpDown — 1 комментарий

  1. Теоретически есть еще событие TextChanged, но в списке событий VisualStudio оно почему-то не отображается.

    Действительно, такое событие есть. Однако, если оно не отображается в списке событий - это ещё не означает, что его нельзя использовать.

    Тебе просто нужно сделать в коде программы
    numericUpDown1.TextChanged += new EventHandler(numericUpDown1_TextChanged);

    и, соответственно создать функцию. Уж это событие срабатывает при любом изменении текстового поля.

Добавить комментарий для Darkest Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>