文本框输入数字范围

时间:2013-12-08 01:25:13

标签: vb.net exception input textbox

我正在尝试处理我的文本框输入值。我希望用户只能使用KeyPress输入一个范围内的数字。防爆。 (0 - 1000)。我有代码来防止任何输入不是一个数字。我无法弄清楚如何防止用户输入不在一定范围内的值。

Private Sub txt2x6LumberQuanity_KeyPress(sender As Object, e As KeyPressEventArgs) Handles   txt2x6LumberQuanity.KeyPress
    If Not Char.IsNumber(e.KeyChar) And Not Char.IsControl(e.KeyChar) Then
        e.Handled = True
    End If       
End Sub

有没有人有任何建议。我花了几个小时搜索,但似乎找不到合适的解决方案。

2 个答案:

答案 0 :(得分:1)

我会使用更改的文本和ErrorProvider组件来实现此效果:

有效参赛作品

OkValid

无效条目

NotValid

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    public int User2x6LumberQuantity
    {
        get
        {
            int x;
            if (int.TryParse(txt2x6LumberQuantity.Text, out x))
            {
                return x;
            }
            return 0;
        }
    }

    private void txt2x6LumberQuantity_TextChanged(object sender, EventArgs e)
    {
        errorProvider1.SetError(txt2x6LumberQuantity, null);
        int x=User2x6LumberQuantity;
        if (x<0||x>1000)
        {
            errorProvider1.SetError(txt2x6LumberQuantity, "Value Must Be (0-1000)");
            continueButton.Enabled=false;
        }
        else
        {
            continueButton.Enabled=true;
        }            
    }
}

答案 1 :(得分:-1)

您可以将其添加到Keypress事件处理程序

    If Char.IsNumber(e.KeyChar) Then
        Dim newtext As String = TextBox1.Text.Insert(TextBox1.SelectionStart, e.KeyChar.ToString)
        If Not IsNumeric(newtext) OrElse CInt(newtext) > 1000 OrElse CInt(newtext) < 0 Then e.Handled = True
    End If