防止用户输入零但允许其他包含零的数字

时间:2014-10-09 15:15:41

标签: c# events keypress

我有一个TextBox控件。我已经设置了TextBox的KeyPress事件,因此只允许用户输入数字:

private void txtbxRecurEveryXWeeks_KeyPress(object sender, KeyPressEventArgs e)
{
   if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
   {
       e.Handled = true;
   }
}

但除此之外,我不希望用户将TexBot的值设置为零“0”。但他们仍然应该被允许输入“10”或“3400”作为价值。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

最好忽略按键事件并处理丢失的焦点事件,并在用户完成输入时检查并确保值不是0

编辑:有人指出,用户可以键入" 000"失去焦点会导致失败。您可以检查并确认文本框中有值并将其解析为int以确认它不是0.

private void txtbxRecurEveryXWeeks_LostFocus(object sender, EventArgs e)
{
    int value;
    if(!string.IsNullOrWhitespace(txtbxRecurEveryXWeeks.Text) 
        && int.TryParse(txtbxRecurEveryXWeeks.Text, out value) 
        && value > 0)
    {
        //Do something like clear the textbox value
    }
}

答案 1 :(得分:0)

假设您使用,请考虑使用NumericUpDown控件输入数字。它具有Minimum属性,您可以将其设置为1以避免零输入。

答案 2 :(得分:0)

使用最小值= 1的NumericUpDown和隐藏的向上和向下按钮。

    numericUpDown1.Minimum = 1;
    numericUpDown1.Controls[0].Hide();