【问题标题】:VB.NET textbox maxlength for positive/negative integers正/负整数的 VB.NET 文本框最大长度
【发布时间】:2012-04-25 19:11:25
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: vb.net textbox integer validation maxlength


    【解决方案1】:

    您实际上想要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.
        }
    }
    

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

    【讨论】:

    • 感谢您对 NumericUpDownControl 的提示。
    【解决方案2】:

    检查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
    

    【讨论】:

    • 好的,这将限制用户输入除数字或减号之外的任何其他字符,但我正在捕捉 Integer.parse() 抛出的异常以查看是否输入了其他任何内容。无论如何谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多