C# 嵌套if和普通if语句
Hi在按钮事件中有一个if语句,当我运行代码并选择第一个单选按钮并单击按钮(进行计算)时,它会将其打印在标签上,但当我单击第二个单选按钮并单击按钮以计算答案时,根本不会发生任何事情。有什么想法吗C# 嵌套if和普通if语句,c#,winforms,C#,Winforms,Hi在按钮事件中有一个if语句,当我运行代码并选择第一个单选按钮并单击按钮(进行计算)时,它会将其打印在标签上,但当我单击第二个单选按钮并单击按钮以计算答案时,根本不会发生任何事情。有什么想法吗 private void button1_Click(object sender, EventArgs e) { if (radioButton1.Checked == true) { double a; //
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked == true)
{
double a; // have to declare double here as we cannot include it below as bool is a rue or false statment
bool success1 = double.TryParse(textBox1.Text, out a); // take in value as true or false
if (success1) // check if it was parsed successful
{
label4.Text = ConvertToCel(a).ToString(); // now set it in label
}
else if (radioButton1.Checked == false && radioButton2.Checked == true)
{
double a1;
bool success = double.TryParse(textBox1.Text, out a1);
if (success){
label3.Text = ConvertToFar(a1).ToString();
}
}
else if (radioButton1.Checked == false && radioButton2.Checked == false)
{
label4.Text = "Please select an option from above";
}
}
}�
这是因为单选按钮是互斥的,只有选中了
radioButton1
,您才执行代码。您可能还应该处理无法正确解析文本框的情况(即,如果用户输入的内容无法转换为double)。我已经把它包括在下面了
double a;
bool success = double.TryParse(textBox1.Text, out a);
if (success)
{
if (radioButton1.Checked == true)
{
label4.Text = ConvertToCel(a).ToString();
}
else if (radioButton2.Checked == true)
{
label3.Text = ConvertToFar(a).ToString();
}
else
{
label4.Text = "Please select an option from above";
}
}
else
{
label4.Text = "The value could not be convered to a number.";
}
这是因为您已将
else
放在if
语句的第一个if
语句中。仅当第一条if
语句中的条件为真时,才会运行单选按钮2的检查
在else
语句之前结束第一个if
语句的块:
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked == true)
{
double a; // have to declare double here as we cannot include it below as bool is a rue or false statment
bool success1 = double.TryParse(textBox1.Text, out a); // take in value as true or false
if (success1) // check if it was parsed successful
{
label4.Text = ConvertToCel(a).ToString(); // now set it in label
}
}
else if (radioButton1.Checked == false && radioButton2.Checked == true)
{
double a1;
bool success = double.TryParse(textBox1.Text, out a1);
if (success){
label3.Text = ConvertToFar(a1).ToString();
}
}
else if (radioButton1.Checked == false && radioButton2.Checked == false)
{
label4.Text = "Please select an option from above";
}
}
问题在于,您首先检查radiobutton1的条件,然后将其他条件嵌套在其中,因此,如果第一个条件为false,则不检查其他条件,以避免您将其他else if条件置于第一个if条件之外,您可以使用:-
private void button1_Click(object sender, EventArgs e)
{
double a; // have to declare double here as we cannot include it below as bool is a rue or false statment
bool success1 = double.TryParse(textBox1.Text, out a); // take in value as true or false
if (radioButton1.Checked == true)
{
if (success1) // check if it was parsed successful
{
label4.Text = ConvertToCel(a).ToString(); // now set it in label
}
}
else if (radioButton1.Checked == false && radioButton2.Checked == true)
{
if (success)
{
label3.Text = ConvertToFar(a).ToString();
}
}
else if (radioButton1.Checked == false && radioButton2.Checked == false)
{
label4.Text = "Please select an option from above";
}
}
注意哪个
else
与哪个if
匹配。只有在选中radioButton1时,您的整个代码才会运行,因为您将所有内容都放在if(radioButton1.checked==true)
块中。由于您已将a分配给success@Brett Wolfington,我将在何处声明a1没有必要。a1与a的值相同。我收到一个错误,告诉我a1在当前上下文中不存在加上a和a1来自两个独立的methods@yemioladejoa
和a1
的值都来自textBox1。不需要两个独立的变量。转换一次,根据需要多次使用。谢谢,这很有帮助,下次我会注意类似的错误。嗨,我遇到一个错误,说a1在当前上下文中不存在。我已经编辑了代码,它现在应该可以工作了,我犯了一个错误,使用了a1而不是包含双值的a。我编辑了原始代码,以便您可以看到我如何使用a和a1,因为它们来自两个不同的方法。a和a1在这里并不重要,因为a和a1都是局部变量,在事件和您定义的方法的情况下,我发布的代码应该可以工作,不管我传递的变量名是什么,最终接收的值都不依赖于发送它的变量名