2012-04-25 130 views
0

问题很简单:我有一个带有文本框的表单,在其中一个文本框中,我希望用户输入正数或负数两位数数字。我正在寻找一种简单的方法来强制执行此限制,即无需解析数字并检查其绝对值是否低于100.正整数/负整数VB.NET textbox maxlength

如果将textbox maxlength设置为2,则它们不能输入-9以下的数字。如果最大长度为3,他们可以输入99以上的数字。

蒙面文本框没有解决方案,我不能让“ - ”文字是可选的,或者至少不是我所知道的。

这个限制最简单的解决方案是什么?“如果没有” - “是空的文本框将接受2个输入字符,否则它接受3”?处理变化事件,看看是否键入“ - ”,并重置maxlength似乎有点矫枉过正...

回答

2

你实际上想要一个NumericUpDownControl。使用它,并设置其MinimumMaximum属性。根本不需要验证代码,并轻松解决您的问题。

如果你坚持使用TextBox那么简而言之,如果不实际检查数字,你将无法获得想要的功能。你可以编写一个UserControl来做到这一点,你可以重用它,但你仍然需要编写一些验证代码。

只需验证使用ASP.NET/JavaScript样式验证的整数。本示例使用Red的ForeColor标签显示验证消息。

private void numberTextBox_TextChanged(object sender, EventArgs e) { 
    int number; 

    bool isValid = int.TryParse(numberTextBox.Text, out number); 

    if (!isValid) { 
     validationLabel.Text = "Must be a two-digit number."; 
     validationLabel.Visible = true; 
     return; 
    } 

    if (number < -99 || number > 99) { 
     validationLabel.Text = "Must be between -99 and 99"; 
     validationLabel.Visible = true; 
     return; 
    } 

    if (isValid) { 
     validationLabel.Visible = false; 
     // Do something else with your number 
     // if you need to. 
    } 
} 

必须编写代码来进行验证没有任何问题。否则,使用现有的设计器属性可能无法取得良好效果。

+0

感谢您对NumericUpDownControl的提示。 – MarioDS 2012-04-25 19:32:10

0

检查文本框的KeyPress事件,并检查字符是数字或=“ - ”

此代码,只允许数字和负号,你可以检查,如果数字是大于100

private Sub Textbox1_KeyPress (ByVal sender as object, ByVal e as KeyPressEventArgs) 

    If (e.IsDigit(e.KeyChar) OR e.KeyChar = '-') Then 
     e.Handled = false 
    End If 

End Sub 
+0

好吧,那会限制用户放入除数字或减号以外的任何其他字符,但我捕捉到Integer.parse()引发的异常,以查看是否有其他输入。不管怎么说,还是要谢谢你 :) – MarioDS 2012-04-25 20:14:19