C# - 遍历表单组件(不是控件)

时间:2013-10-17 14:08:44

标签: c# winforms timer components

我的表单有许多Timer组件,我试图在运行时循环。我的目标是立即停止表单上的所有计时器。

我尝试调整一些代码,我必须使用控件执行相同的操作但是它似乎没有工作。

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

停止Winforms计时器意味着不再向计时消息(WM_TIMER)发布消息队列。但是仍会处理消息队列中的任何先前的WM_TIMER消息。因此,即使在Timer已经停止之后,当您创建Timer消息然后可以处理它们时,也可能会处理多个Tick事件。

<强>更新 检查源显示Winforms Timer在计时器停止时吞下WM_TIMER消息,然后不会触发任何Tick事件。所以这是正确答案。