我目前正在开发使用Windows窗体GUI的应用程序。该应用程序的主要工作将在另一个线程上执行 - 但它可能取决于表单的状态。
因此,在创建线程之前,我必须确保表单完全加载。另外,我需要确保在表单开始关闭之前终止该线程。
此问题的可能解决方案可能会覆盖OnShown
和OnFormClosing
方法。
只有在加载了表单的所有资产之后才真正调用OnShow
方法吗?那么OnFormClosing
- 我可以确定在此方法中执行的任何代码都将在表单开始关闭/ dispose之前执行吗?
答案 0 :(得分:2)
Windows窗体事件可能很棘手,并且它们触发的顺序不可靠。例如,'Shown'事件意味着只触发一次,当Form首次显示时,但就在昨天我找到了一种方法来通过在正确的时间操纵Form.Visible标志来完全防止该事件被触发。
因此,您需要非常具体地了解您的需求。例如 - 当你说'完全装满'时,你的意思是什么?创建控件,表单可见,表单构造函数完成执行?
同样,FormClosing事件可能会被主aUI线程中的未处理异常所规避,这会导致在不触发事件的情况下删除Form。
我建议不要假设这些事件。使您的工作线程能够处理Form状态不可用或未准备好。在不知道您的具体要求的情况下,很难更具体。
答案 1 :(得分:2)
我建议您阅读MSDN上发布的WinForms事件排序:
答案 2 :(得分:0)
您是否尝试在主WinForm的构造函数上使用InitializeComponent并使用 OnLoad (在加载所有内容时调用)?