我是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");
}
}
答案 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;
}
}