C# - 循环访问窗体组件(而不是控件)



我的窗体有许多 Timer 组件,我正在寻求在运行时循环访问这些组件。我的目标是一次停止表单上的所有计时器。

尝试调整一些代码,我必须对控件做同样的事情,但它似乎不起作用。

foreach (var tmr in this.components.Components.OfType<Timer>())
{
    tmr.Stop();
}

任何帮助将不胜感激。

停止 WinForms 计时器意味着不再将计时器消息 (WM_TIMER) 发布到消息队列。但是,将处理仍在消息队列中的任何先前WM_TIMER消息。因此,即使您创建计时器消息的速度比可以处理它们的速度更快,即使在计时器停止后,也可能会处理多个 Tick 事件。

更新:检查源显示,当计时器停止时,Winforms 计时器会吞下WM_TIMER消息,并且不会触发任何即时报价事件。所以这不是正确的答案。

最新更新