c#如何允许我的文本框.文本接受一个以上的数字

本文关键字:文本 一个以 数字 何允许 我的 | 更新日期: 2023-09-27 18:07:58

我是c#的新手,我试图实现下面的代码,但注意到只有一个数字被文本框接受。文本虽然声明为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");
        }
     }

c#如何允许我的文本框.文本接受一个以上的数字

在用户输入的每个字符上触发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);

您需要首先禁用textBox2:

this.textBox2.Enabled = false;

然后改变第一个文本框,像这样留下事件处理程序:

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;
    }
}