C# 调用方法时计时器和窗体未关闭

C# 调用方法时计时器和窗体未关闭,c#,methods,timer,C#,Methods,Timer,我有三个独立的定时器,它们在每个时钟中调用一个方法。该方法工作正常,但其中包含一个if语句,用于检查两个值是否小于或>一个数字: if ((x < y) || (x > z)) { } if((xz)) { } 在这个语句中,我想停止这三次,显示一个消息框并处理表单。这是我正在使用的代码: if ((x < yArray[0]) || (x > yArray[1])) { frmFooBar barFoo = new frmFooBar(); barFo

我有三个独立的定时器,它们在每个时钟中调用一个方法。该方法工作正常,但其中包含一个if语句,用于检查两个值是否小于或>一个数字:

if ((x < y) || (x > z))
{

}
if((xz))
{
}
在这个语句中,我想停止这三次,显示一个消息框并处理表单。这是我正在使用的代码:

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();
}
if((xyArray[1]))
{
frmFooBar barFoo=新的frmFooBar();
barFoo.tmrOne.Stop();
barFoo.tmrTwo.Stop();
barFoo.tmrTree.Stop();
MessageBox.Show(GlobalVariables.aVariable+“已死亡”);
Dispose();
}
条件很好地工作,因为当任一语句为true时,我将在每个勾号处弹出一个MessageBox。我遇到的问题是这些表单函数都不起作用。tmrOne,两个继续运行,窗体没有关闭


我对C#还是新手,所以也许我的问题很明显,但任何帮助都会很好!谢谢。

您正在用自己的方法进行此操作:

frmFooBar barFoo = new frmFooBar(); 
barFoo.tmrOne.Stop(); 
barFoo.tmrTwo.Stop(); 
这将创建frmFooBar的新实例,并且对已运行的实例没有影响

如果这是在窗体上计时器的勾号事件中发生的,则需要使用“this”,因为这将是当前正在运行的窗体:

this.tmrOne.Stop();
this.tmrTwo.Stop();

这样,您就停止了当前正在运行的窗体上的计时器。

您正在使用您的方法执行此操作:

frmFooBar barFoo = new frmFooBar(); 
barFoo.tmrOne.Stop(); 
barFoo.tmrTwo.Stop(); 
这将创建frmFooBar的新实例,并且对已运行的实例没有影响

如果这是在窗体上计时器的勾号事件中发生的,则需要使用“this”,因为这将是当前正在运行的窗体:

this.tmrOne.Stop();
this.tmrTwo.Stop();

这样,您就停止了当前运行表单上的计时器。

要关闭表单,您需要使用form.Close();您可以使用这个。Close();如果你想关闭你所在的表单。 要停止计时器,请使用计时器。Enabled=false; 希望能有所帮助
Amit

要关闭表单,需要使用form.Close();您可以使用这个。Close();如果你想关闭你所在的表单。 要停止计时器,请使用计时器。Enabled=false; 希望能有所帮助
Amit

哦,你有可能在使用全局动词吗?因为您需要将带有计时器的窗体传递给调用此方法的窗体。如果没有,只需直接调用计时器和close方法,而不使用“FormName”。Timer.Stop()噢,您可能正在使用全局谓词?因为您需要将带有计时器的窗体传递给调用此方法的窗体。如果没有,只需直接调用计时器和close方法,而不使用“FormName”。Timer.Stop()