我遇到这个问题或这种情况。我有五个文本框,其中前两个textbox
用户需要键入任何值,然后接下来两个文本框将通过使用插入值和某些条件显示结果。最后,另一个textbox
将根据显示的结果显示新结果。
这就是我的尝试:
private void textBox3_TextChanged(object sender, EventArgs e)
{
float value;
if (float.TryParse(textBox3.Text, out value))
{
if (value < 1)
{
textBox4.Text = "1C";
}
else if (value >= 1 && value <2)
{
textBox4.Text = "5T";
}
else if (value >= 2)
{
textBox4.Text = "NG";
}
}
else
{
textBox4.Text = "";
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
float value;
if (float.TryParse(textBox1.Text, out value))
{
if (value < 2)
{
textBox2.Text = "2T";
}
else if (value < 5 || value==2)
{
textBox2.Text = "5T";
}
else if (value > 5 )
{
textBox2.Text = "NG";
}
else
{
textBox2.Text = "NG";
}
}
else
{
textBox2.Text = "";
}
}
如果用户在&#34; textBox3
&#34;中输入值它会在&#34; textBox4
&#39;上显示结果,
如果用户在&#34; textBox1
&#34;中输入值它将在&#34; textBox2
&#34;
我想使用&#34; textBox4
和textBox2
&#34;中的值做一些条件检查然后在&#34; textBox84
&#34;显示新结果。
我尝试创建代码并将其放在加载函数中,但没有出现:
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("Please choose the correct FORM .",
"Important Message !");
var a = textBox4.Text.ToString();
var b = textBox2.Text.ToString();
if (a == "NG" && b == "NG")
{
textBox84.Text = "s";
}
}
答案 0 :(得分:2)
首先,与textBox3_TextChanged
不同,textBox1_TextChanged
中的条件可以像这样简化,
private void textBox1_TextChanged(object sender, EventArgs e)
{
float value;
if (float.TryParse(textBox1.Text, out value))
{
if (value < 2)
{
textBox2.Text = "2T";
}
else if (value < 5) //value==2 can be removed since it is covered in value < 5
{
textBox2.Text = "5T";
}
else //simply put else here, it is equivalent to what you did
{
textBox2.Text = "NG";
}
}
else
{
textBox2.Text = "";
}
}
其次,由于textBox84
的检查条件仅在表单加载期间完成,
//This is in the Form1_Load
if (a == "NG" && b == "NG")
{
textBox84.Text = "s";
}
由于textBox2
和textBox4
中的文字发生了变化,因此无法执行。您的所有初始化实际上都是在Form1()
之后的InitializeComponent
构造函数中完成的,而不是Form1_Load
为了安全起见,您应该为textBox2
和textBox4
创建事件处理程序,就像您对textBox1
和textBox3
private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox84.Text = textBox2.Text == "NG" && textBox4.Text == "NG" ? "s" : "";
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
textBox84.Text = textBox2.Text == "NG" && textBox4.Text == "NG" ? "s" : "";
}
这样,您的textBox84
真实地回复了textBox2
和textBox4
TextChanged
个事件,而不是Form1_Load
个事件。
旁注:
表达式
if (textBox2.Text == "NG" && textBox4.Text == "NG")
textBox84.Text = "s";
else
textBox84.Text = "";
可以进一步简化为
textBox84.Text = textBox2.Text == "NG" && textBox4.Text == "NG" ? "s" : "";
如果您使用三元运算符