How do I check whether the user left a NumericUpDown control empty, removing the value on it? So I can reassign it a value of 0.

有帮助吗?

解决方案

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

其他提示

It might be useful to use the validated event and ask for the text property

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

Even if the user deleted the content of the numericUpDown control, its value still remains.
upDown.Text will be "", but upDown.Value will be the previous valid value entered.
So my way to 'prevent' the user to leave the control empty, on the onLeave event, I set:

upDown.Text = upDown.Value.ToString();
decimal d = 0 
if(decimal.TryParse(NumericUpDown1.Text, out d)
{

}
NumericUpDown1.Value = d;

Try this

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

If you want to forbid empty value for NumericUpDown, just use this class. Its effect is that once the user tries to erase the control value with select-all + backspace key, the actual numeric value is set again. This is not really an annoyance since the user can still select-all + type a numeric digit to start editing a new numeric value.

  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;
     }
  }

You can try this:

if(numericUpDown.Value == 0){

 MessageBox.Show(
   "Please insert a value.", 
   "Required", MessageBoxButtons.OK, 
   MessageBoxIcon.Exclamation
 );

 return;

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top