如果涉及Radiobuttons的声明

时间:2013-07-08 18:16:14

标签: c#

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

    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 =(”/“);”但除了错误的顺序之外,它并没有真正改变任何东西。 任何帮助,将不胜感激!谢谢:))

2 个答案:

答案 0 :(得分:2)

我认为您需要检查每个单独的radioButtonX_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 = ("/");
        }
    }

如果这有帮助,请告诉我,如果您仍然遇到此问题。

答案 1 :(得分:0)

您可能想要更改检查“已选中”按钮的方式。 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的事件设置正确,并且看到不正确的结果,就很难理解。