0

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

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

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

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

4

2 回答 2

2

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

如果您坚持使用TextBoxthen 简而言之,如果不实际检查数字,您将无法获得所需的功能。您可以编写一个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.
    }
}

必须编写代码来进行验证并没有错。否则,您可能不会使用现有的设计器属性获得良好的结果。

于 2012-04-25T19:27:30.470 回答
0

检查Textbox的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
于 2012-04-25T19:35:54.743 回答