0

我目前正在 C# 上创建一个计算器类型的表单。我有四个单选按钮(加法、减法、多重和 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 = ("/");
        }

    }

is when I select the division button the label does not change unless I go through all the buttons and THEN other radio buttons (such as subtraction), when selected, do not change the label until multiple tries. 我尝试将最后一行更改为 "else label3.text=("/");" 但除了错误的顺序之外,它并没有真正改变任何东西。任何帮助,将不胜感激!谢谢 :)

4

3 回答 3

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 = ("/");
        }
    }

让我知道这是否有帮助,如果您仍然遇到问题。

于 2013-07-08T18:21:18.543 回答
0

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

于 2013-07-08T18:27:17.873 回答
0
protected void Page_Load(object sender, EventArgs e)
    {
        agm.Visible = RadioButtonList1.SelectedValue == "1" ? true : false;
    }
于 2021-09-22T12:57:36.263 回答