这是错的吗?
即使检查了checkBox2,我也总是得到“cb1和固件”。我也尝试过& amp;而不是&&。
在我必须将其添加到线程中以使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;
}
}
答案 0 :(得分:1)
即使我的checkBox2被选中,我总是得到“cb1和固件”。
检查checkBox2
的事实不会改变checkBox1
也被检查的事实,因此第一个if
语句成功。如果未选中checkBox1
,则会归结为其他集。
目前尚不清楚你在这里要做什么,但我会说前两个if
陈述需要逆转。
答案 1 :(得分:1)
似乎你只想在未检查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
答案 2 :(得分:1)
尝试重新排序代码
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();
}