Проверьте, пуст ли NumericUpDown

Как проверить, оставил ли пользователь NumericUpDown управление пустое, удаление значения на нем? Поэтому я могу переназначить его значение 0.

6 ответов


if(NumericUpDown1.Text == "")
{
     // If the value in the numeric updown is an empty string, replace with 0.
     NumericUpDown1.Text = "0";
}

может быть полезно использовать проверенное событие и запросить свойство text

private void myNumericUpDown_Validated(object sender, EventArgs e)
{
    if (myNumericUpDown.Text == "")
    {
        myNumericUpDown.Text = "0";
    }
}

decimal d = 0 
if(decimal.TryParse(NumericUpDown1.Text, out d)
{

}
NumericUpDown1.Value = d;

попробуй такое

if (string.IsNullOrEmpty(((Control)this.nud1).Text))
{
  //null
}
else
{
  //have value
}

Если вы хотите запретить пустое значение NumericUpDown, просто использовать этот класс. Его эффект заключается в том, что после того, как пользователь пытается стереть значение элемента управления с выбрать-все + клавиша backspace, фактическое числовое значение задается снова. Это не очень раздражает, так как пользователь все еще может select-all + введите числовую цифру начать редактирование нового числового значения.

  sealed class NumericUpDownEmptyValueForbidder {
     internal NumericUpDownEmptyValueForbidder(NumericUpDown numericUpDown) {
        Debug.Assert(numericUpDown != null);
        m_NumericUpDown = numericUpDown;
        m_NumericUpDown.MouseUp += delegate { Update(); };
        m_NumericUpDown.KeyUp += delegate { Update(); };
        m_NumericUpDown.ValueChanged += delegate { Update(); };
        m_NumericUpDown.Enter += delegate { Update(); };
     }
     readonly NumericUpDown m_NumericUpDown;
     string m_LastKnownValueText;

     internal void Update() {
        var text = m_NumericUpDown.Text;
        if (text.Length == 0) {
           if (!string.IsNullOrEmpty(m_LastKnownValueText)) {
              m_NumericUpDown.Text = m_LastKnownValueText;
           }
           return;
        }
        Debug.Assert(text.Length > 0);
        m_LastKnownValueText = text;
     }
  }

даже если пользователь удалил контент numericUpDown control, его значение все еще остается.
upDown.Text будет "", но upDown.Value будет предыдущим введенным допустимым значением.
Поэтому мой способ "предотвратить" пользователя, чтобы оставить элемент управления пустым, на onLeave событие, я установил:

upDown.Text = upDown.Value.ToString();