C# 嵌套if和普通if语句

C# 嵌套if和普通if语句,c#,winforms,C#,Winforms,Hi在按钮事件中有一个if语句,当我运行代码并选择第一个单选按钮并单击按钮(进行计算)时,它会将其打印在标签上,但当我单击第二个单选按钮并单击按钮以计算答案时,根本不会发生任何事情。有什么想法吗 private void button1_Click(object sender, EventArgs e) { if (radioButton1.Checked == true) { double a; //

Hi在按钮事件中有一个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
,您才执行代码。您可能还应该处理无法正确解析文本框的情况(即,如果用户输入的内容无法转换为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@yemioladejo
a
a1
的值都来自textBox1。不需要两个独立的变量。转换一次,根据需要多次使用。谢谢,这很有帮助,下次我会注意类似的错误。嗨,我遇到一个错误,说a1在当前上下文中不存在。我已经编辑了代码,它现在应该可以工作了,我犯了一个错误,使用了a1而不是包含双值的a。我编辑了原始代码,以便您可以看到我如何使用a和a1,因为它们来自两个不同的方法。a和a1在这里并不重要,因为a和a1都是局部变量,在事件和您定义的方法的情况下,我发布的代码应该可以工作,不管我传递的变量名是什么,最终接收的值都不依赖于发送它的变量名