我有这段代码:
bool on = true;
if (on == false)
{
on = true;
silenceToolStripMenuItem.Checked = false;
}
if (on == true)
{
on = false;
silenceToolStripMenuItem.Checked = true;
}
第一次单击它(默认情况下未选中)它将自行检查。但是,每次在检查之后,它都不会取消选中。
答案 0 :(得分:0)
你忘了写别的部分。相反,你写了两个if语句。所以它正在评估两者,只有第二个被评估为第一个总是设置on = true
。
哦顺便说一句,怎么样
bool on = true;
if (on == false)
{
on = true;
silenceToolStripMenuItem.Checked = false;
}
else
{
on = false;
silenceToolStripMenuItem.Checked = true;
}
更简单
bool on = true;
silenceToolStripMenuItem.Checked = on;
on = !on;
答案 1 :(得分:0)
因为您每次都要将局部变量on
设置为true,所以它永远不会进入if (on == false)
我认为您要确保on
被声明为逻辑,并添加其他版本,以便它不会改变。
private bool on = true:
private void MyMethod()
{
if (on == false)
{
on = true;
silenceToolStripMenuItem.Checked = false;
}
else if (on == true)
{
on = false;
silenceToolStripMenuItem.Checked = true;
}
}
或只是
private void MyMethod()
{
silenceToolStripMenuItem.Checked = !silenceToolStripMenuItem.Checked
}