2014-02-07 5 views
2

Я надеюсь, что у кого-то есть решение этой проблемы. У меня есть ряд элементов NumericUpDown, которые используются в расчете, чтобы найти общее количество минут, прошедших для нескольких поездок, где часы и минуты известны для каждой поездки. Проблема, которую я испытываю, заключается в том, что когда пользователь вручную очищает один из элементов NUD, введя NUD, а затем используя клавишу backspace, чтобы очистить текст, значение все равно сохраняется и вызывает неожиданные результаты в вычислении.NumericUpDown Control сохраняет значение после удаления текста

Вот пример того, что я говорю: enter image description here Выше calulates 90 минут

enter image description here Над вычисляет 120 минут

enter image description here После того как текст trip2 минут очищается реверса, по-прежнему рассчитывает 120 минут

Есть ли способ изменить это поведение? Может быть, мне не хватает чего-то очевидного. Есть идеи?

Заранее благодарен!

ответ

1

Вы можете попробовать использовать событие отпуска элемента управления, чтобы проверить свойство «Текст»:

numericUpDown1.Leave += numLeave; 
numericUpDown2.Leave += numLeave; 

void numLeave(object sender, EventArgs e) { 
    NumericUpDown nud = sender as NumericUpDown; 
    if (nud != null) { 
    if (nud.Text == string.Empty) { 
     nud.Value = nud.Minimum; 
     nud.Text = nud.Value.ToString(); 
    } 
    } 
} 

Обратите внимание, что свойство Текст скрыт от Intellisense, но он будет работать.

+0

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

Смежные вопросы