if 语句中的所有项目均未触发
All items in if statement not firing
我想弄清楚为什么只有 if 语句中的第一行是唯一被执行的行。
bool messageDisplayed = false;
private void timer1_Tick(object sender, EventArgs e)
{
var position = axVLCPlugin21.input.Position;
label1.Text = string.Format("{0}% completed", position * 100);
if (position > 0.8 && messageDisplayed == false)
{
MessageBox.Show("80 has been passed");
messageDisplayed = true;
}
}
消息框不断出现,让我相信messageDisplayed = true
从未被设置,所以我设置了一个断点来检查。
果然,它进入了 if 语句,显示了消息框,然后重新启动了事件——根本没有去 messageDisplayed = true;
有人能看出我哪里出错了吗?
MessageBox.Show()
"pauses" 代码的执行。 messageDisplayed = true;
在您关闭 MessageBox
时触发。
因此,修改您的代码如下:
if (position > 0.8 && !messageDisplayed)
{
messageDisplayed = true;
MessageBox.Show("80 has been passed");
}
MessageBox 导致 运行 暂停,这让您可以再次触发事件,甚至在您的 bool 变量变为真之前。试着把你的 bool 放在 messagebox
之前
我想弄清楚为什么只有 if 语句中的第一行是唯一被执行的行。
bool messageDisplayed = false;
private void timer1_Tick(object sender, EventArgs e)
{
var position = axVLCPlugin21.input.Position;
label1.Text = string.Format("{0}% completed", position * 100);
if (position > 0.8 && messageDisplayed == false)
{
MessageBox.Show("80 has been passed");
messageDisplayed = true;
}
}
消息框不断出现,让我相信messageDisplayed = true
从未被设置,所以我设置了一个断点来检查。
果然,它进入了 if 语句,显示了消息框,然后重新启动了事件——根本没有去 messageDisplayed = true;
有人能看出我哪里出错了吗?
MessageBox.Show()
"pauses" 代码的执行。 messageDisplayed = true;
在您关闭 MessageBox
时触发。
因此,修改您的代码如下:
if (position > 0.8 && !messageDisplayed)
{
messageDisplayed = true;
MessageBox.Show("80 has been passed");
}
MessageBox 导致 运行 暂停,这让您可以再次触发事件,甚至在您的 bool 变量变为真之前。试着把你的 bool 放在 messagebox
之前