VB.NET文本框maxlength为正/负整数

时间:2012-04-25 19:11:25

标签: vb.net textbox integer validation maxlength

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

如果我将文本框maxlength设置为2,则不能输入低于-9的数字。如果maxlength为3,则可以输入99以上的数字。

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

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

2 个答案:

答案 0 :(得分:2)

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

如果您坚持使用TextBox,那么在没有实际检查号码的情况下,您将无法获得所需的功能。您可以编写UserControl来执行此操作,然后重复使用它,但您仍需编写一些验证代码。

使用ASP.NET / JavaScript样式验证验证整数。此示例使用带有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.
    }
}

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

答案 1 :(得分: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