c# menuItem1 不会禁用
本文关键字:menuItem1 | 更新日期: 2023-09-27 18:33:01
这是错的吗?
即使选中了复选框2,我也总是得到"cb1和固件"。我也尝试了只是 & 而不是 &&。
在我必须将其添加到线程以使 UI 正确更新之前,它工作正常。
private void MyWorkerThread2()
{
if (this.IsChecked(checkBox1) && (this.IsChecked(checkBox2) && (myString == "86.09.0000")))
{
MessageBox.Show("cb1 and firmware and cb2");
Prep.clean();
startedimage();
fscreate();
wipefiles();
}
else if ((this.IsChecked(checkBox1) && (myString == "86.09.0000")))
{
MessageBox.Show("cb1 and firmware");
Prep.clean();
startedimage();
wipefiles();
}
else if (myString == "86.09.0000")
{
MessageBox.Show("firmware");
if (myThread == null)
{
Prep.clean();
startedimage();
myThread = new Thread(MyWorkerThread);
myThread.IsBackground = true;
myThread.Start();
}
}
else
{
FactoryReset();
}
}
public delegate bool IsCheckedDelegate(CheckBox cb);
public bool IsChecked(CheckBox cb)
{
if (cb.InvokeRequired)
{
return (bool)cb.Invoke(new IsCheckedDelegate(IsChecked), new Object[] { cb });
}
else
{
return cb.Checked;
}
}
即使选中了复选框2,我也总是得到"cb1和固件"。
检查checkBox2
的事实不会改变checkBox1
也被检查的事实,因此第一个if
语句成功。如果不检查checkBox1
,它将落到其他集合中。
目前还不清楚你在这里想做什么,但我想说前两个if
陈述需要颠倒过来。
似乎您只希望在未选中 checkBox2 时执行第一个。
改变:
if ((this.IsChecked(checkBox1) && (myString == "86.09.0000")))
自:
if ((this.IsChecked(checkBox1) && (!this.IsChecked(checkBox2) && (myString == "86.09.0000")))
这里有四种可能性:
none
cb1
cb2
cb1, cb2
尝试对代码重新排序
if (this.IsChecked(checkBox1) && (this.IsChecked(checkBox2) && (myString == "86.09.0000")))
{
MessageBox.Show("cb1 and firmware and cb2");
Prep.clean();
startedimage();
fscreate();
wipefiles();
}
else if ((this.IsChecked(checkBox1) && (myString == "86.09.0000")))
{
MessageBox.Show("cb1 and firmware");
Prep.clean();
startedimage();
wipefiles();
}