在我的基于 C# 的应用程序中,我在我的应用程序中创建了一个新表单,它有自己的 System.Forms.Timer 对象。第一次创建表单时一切正常,我收到计时器滴答声,没有问题。在某些情况下,我必须终止表单并创建一个新的(相同的)表单对象。表单以类似的方式创建。表单已正确加载,计时器已正确初始化但计时器未打勾。我尝试了不同的方法,例如停止和处理计时器对象并在 FormLoad 中创建一个新对象,但徒劳无功。我的朋友建议我的新表单对象可能没有收到 Windows 计时器消息 (WM_TIMER)。如何检查消息循环在我的新表单对象中是否正常工作?我做错了什么?
简而言之,重新创建表单对象会以某种方式禁用计时器滴答。请指教。
代码充满了反射并散开。我会尽可能多地发布。
创建新表单对象的代码
Form f = ReflectUtils.CreateClassFromAssembly( _TheAssembly, FormName ) as Form;
if ( null == f )
{
throw new ApplicationException( "Failed to create Form: {");
}
_GUICancelEventHandler = new CancelEventHandler( GUIControlForm_Cancel );
f.Closing += _GUICancelEventHandler;
f.Show();
破坏形式的代码
f.Close();
f.Dispose();
应用程序使用相同的代码来创建新的表单对象。
定时器的设计器代码
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.timer1.Interval = 500;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
formLoad 事件内部
timer1.Start();
希望这可以帮助。