0

我有这个代码:

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

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

4

2 回答 2

0

因为您将局部变量设置on为 true 每次它永远不会进入if (on == false)

我认为您想确保在on逻辑之外声明它,并添加 else 语句,这样它就不会变回来。

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
}
于 2013-09-03T02:15:54.223 回答
0

你忘了写其他部分。相反,您编写了两个 if 语句。所以它正在评估两者,只有第二个被评估为第一个 always set 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;
于 2013-09-03T02:03:29.073 回答