private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (clearHistoryOnQuitToolStripMenuItem.Checked)
{
System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 255");
}
}
我没有收到任何错误,但程序仍会执行 if 语句中的操作,即使项目未被选中也是如此。
最佳答案
您在执行 if
语句时所做的工作没有问题,因此您在上面提供的内容之外肯定存在问题。
- MenuItem 是选中的还是不确定的(当查询
Checked
时都返回 true) - MenuItem 是否实际切换(错误的属性设置等)
在进入if
语句之前,请确保处于Checked
状态,然后再继续……您可能会立即找到答案。
尝试以下操作并查看运行时写入控制台的内容。
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Console.WriteLine(clearHistoryOnQuitToolStripMenuItem.CheckState.ToString());
if (clearHistoryOnQuitToolStripMenuItem.Checked)
{
System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 255");
}
}
祝你好运,至少从这里你将能够弄清楚为什么你的 Checked
状态总是返回 true(或者是!)...
关于c# - 查看toolstripmenuitem是否被勾选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29714538/