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