我有三个单独的计时器在每个_Tick中调用一个方法。这个方法按预期工作正常,但在其中是一个if语句,它检查两个值是否为<或者>而不是一个数字:
if ((x < y) || (x > z))
{
}
在此声明中,我想停止这三次,显示一个消息框并处理该表单。这是我正在使用的代码:
if ((x < yArray[0]) || (x > yArray[1]))
{
frmFooBar barFoo = new frmFooBar();
barFoo.tmrOne.Stop();
barFoo.tmrTwo.Stop();
barFoo.tmrThree.Stop();
MessageBox.Show(GlobalVariables.aVariable+ " is dead.");
barFoo.Dispose();
}
条件工作正常,因为当任一语句为真时,我会在每个tick中获得一个MessageBox弹出窗口。我遇到的问题是这些形式功能都没有起作用。 tmrOne,两个继续运行,表单没有关闭。
我还是C#的新手,所以也许我的问题很明显,但任何帮助都会很棒!谢谢。
答案 0 :(得分:3)
你在你的方法中这样做:
frmFooBar barFoo = new frmFooBar();
barFoo.tmrOne.Stop();
barFoo.tmrTwo.Stop();
这会创建一个新的frmFooBar实例,并且对已经运行的实例没有影响。
如果在表单上的计时器的tick事件中发生这种情况,您将需要使用“this”,因为这将是当前运行的表单:
this.tmrOne.Stop();
this.tmrTwo.Stop();
这样,您就可以停止当前正在运行的表单上的计时器。
答案 1 :(得分:0)
关闭你需要使用form.Close();你可以使用this.Close();如果你想关闭你的形式。 停止计时器使用Timer.Enabled = false; 希望它有所帮助 阿米特