toolStripMenuItem不会取消选中

时间:2013-09-03 02:01:14

标签: c#

我有这段代码:

bool on = true;
if (on == false)
{
    on = true;
    silenceToolStripMenuItem.Checked = false;
}
if (on == true)
{
    on = false;
    silenceToolStripMenuItem.Checked = true;
}

第一次单击它(默认情况下未选中)它将自行检查。但是,每次在检查之后,它都不会取消选中。

2 个答案:

答案 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
}