我目前正在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 =(”/“);”但除了错误的顺序之外,它并没有真正改变任何东西。 任何帮助,将不胜感激!谢谢:))
答案 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的事件设置正确,并且看到不正确的结果,就很难理解。