C#如何允许我的textbox.text接受多个数字

时间:2016-09-20 12:54:58

标签: c#

我是C#的新手,我正在尝试实现以下代码,但注意到textbox.text只接受了一个数字,但声明为int

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        int RegionIDInput;

        if (int.TryParse(textBox1.Text, out RegionIDInput))
        {
            if (RegionIDInput > 254 || RegionIDInput < 1)
            {
                MessageBox.Show("Enter valid value");
                RegionIDInput = Convert.ToInt32(textBox1.Text);
            }
        }
        else
        {
            MessageBox.Show("Enter Numeric Value");
        }

     }

2 个答案:

答案 0 :(得分:1)

对用户输入的每个字符都会触发TextChanged事件,这是问题的原因。您可以处理Leave事件:

private void textBox1_Leave(object sender, EventArgs e)
{
    int RegionIDInput;
    if (int.TryParse(textBox1.Text, out RegionIDInput))
    {
        if (RegionIDInput > 254 || RegionIDInput < 1)
        {
            MessageBox.Show("Enter valid value");
            this.ActiveControl = textBox1;
        }
    }
    else
    {
        MessageBox.Show("Enter Numeric Value");
        this.ActiveControl = textBox1;
    }
}

请注意,您的代码将文本转换了两次。所以我删除了多余的RegionIDInput = Convert.ToInt32(textBox1.Text);

答案 1 :(得分:0)

您最初需要禁用textBox2:

this.textBox2.Enabled = false;

然后更改第一个文本框Leave事件处理程序,如下所示:

private void textBox1_Leave(object sender, EventArgs e)
{
    int RegionIDInput;
    if (int.TryParse(textBox1.Text, out RegionIDInput))
    {
        if (RegionIDInput < 1 || RegionIDInput > 254)
        {
            MessageBox.Show("Enter valid value");
            this.ActiveControl = textBox1;
        }
        else
        {
            this.textBox2.Enabled = true;
        }
    }
    else
    {
        MessageBox.Show("Enter Numeric Value");
        this.ActiveControl = textBox1;
    }
}