C# - 循环访问窗体组件(而不是控件)
本文关键字:控件 组件 循环 访问 窗体 | 更新日期: 2023-09-27 18:35:43
我的窗体有许多 Timer 组件,我正在寻求在运行时循环访问这些组件。我的目标是一次停止表单上的所有计时器。
我尝试调整一些代码,我必须对控件做同样的事情,但它似乎不起作用。
foreach (var tmr in this.components.Components.OfType<Timer>())
{
tmr.Stop();
}
任何帮助将不胜感激。
停止 WinForms 计时器意味着不再将计时器消息 (WM_TIMER) 发布到消息队列。但是,将处理仍在消息队列中的任何先前WM_TIMER消息。因此,即使您创建计时器消息的速度比可以处理它们的速度更快,即使在计时器停止后,也可能会处理多个 Tick 事件。
更新:检查源显示,当计时器停止时,Winforms 计时器会吞下WM_TIMER消息,并且不会触发任何即时报价事件。所以这不是正确的答案。