Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 涉及单选按钮的If语句_C# - Fatal编程技术网

C# 涉及单选按钮的If语句

C# 涉及单选按钮的If语句,c#,C#,我目前正在C#上创建一个计算器类型的表单。我有四个单选按钮(加法、减法、multi和div),两个文本框之间有一个标签。标签将根据所选的radiobutton进行更改(例如,如果我选择了Addition radiobutton,标签将显示“+”)。我在使用此代码时遇到的问题: private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (radioButton1.Checked

我目前正在C#上创建一个计算器类型的表单。我有四个单选按钮(加法、减法、multi和div),两个文本框之间有一个标签。标签将根据所选的radiobutton进行更改(例如,如果我选择了Addition radiobutton,标签将显示“+”)。我在使用此代码时遇到的问题:

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton1.Checked == true)
        {
            label3.Text = ("+");
        }
        else if (radioButton2.Checked == true)
        {
            label3.Text = ("-");

        }

        else if (radioButton3.Checked == true)
        {
            label3.Text = ("x");

        }

        else if (radioButton4.Checked == true)
        {
            label3.Text = ("/");
        }

    }
当我选择除法按钮时,标签不会更改,除非我通过所有按钮,然后通过其他单选按钮(如减法),如果选中,则在多次尝试之前不会更改标签。我尝试将最后一行更改为“else label3.text=(“/”)”;但除了错误顺序之外,它实际上没有改变任何东西。
任何帮助都将不胜感激!谢谢:)

我想您需要检查每个radioButtonX\u CheckedChanged方法中是否选中了单选按钮,如下所示:

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton1.Checked)
        {
            label3.Text = ("+");
        }
    }

    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton2.Checked)
        {
            label3.Text = ("-");
        }
    }

    private void radioButton3_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton3.Checked)
        {
            label3.Text = ("x");
        }
    }

    private void radioButton4_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton4.Checked)
        {
            label3.Text = ("/");
        }
    }

让我知道这是否有帮助,以及您是否仍然存在问题。

您可能需要更改检查按钮的方式。MrB的解决方案可行,但如果您希望将选择代码保留在单个块中(如您所做),请确保所有单选按钮的CheckedChanged事件都订阅了类似于以下内容的内容:

private void RadioButtonCheckedChanged(object sender, EventArgs e)
{
    var radioButton = (RadioButton)sender;

    if (radioButton.Checked)
    {
        switch (radioButton.Text)
        {
            case "Add":
                label3.Text = "+";
                break;
            case "Subtract":
                label3.Text = "-";
                break;
            case "Divison":
                label3.Text = "/";
                break;
        }
    }
}
您还可以打开另一个属性,如
RadioButton.Tag
字段,任何对您有意义的属性


至于您的代码失败的实际原因,如果不确保哪些RadioButton的事件设置正确,并且没有看到错误的结果,就很难理解。

顺便说一下,
if(radioButton1.Checked==true)
可以缩短为
if(radioButton1.Checked)
。同样的事情,更少的打字,更少的阅读。你能给我们提供更多的代码吗?另外,当radioButton1更改时,您正在调用此代码。可能您的radioButton4与radioButton1没有关联?您不能将所有4个单选按钮连接到同一个方法调用上吗?这些单选按钮是在一个组中吗?这样在给定时间只能检查一个?我有点被你的解释弄糊涂了,所以所有的单选按钮都链接到那个事件吗?将布尔变量与
true
进行比较是多余的。如果(radioButton1.checked)[……]@JacobAbrahams确实,我只是在复制他的代码,我会编辑。好评论!你的想法是对的,但他也可以将相同的方法分配给所有单选按钮CheckedChange并保留一个方法。@Karl JohanSjögren True,但我认为将它们放在单独的事件方法中更有效,因为这样会增加cpu处理的负载(浪费资源)如果选择乘法/除法运算符,则这些额外的条件语句。