等待表单加载完成

本文关键字:加载 表单 等待表 等待 | 更新日期: 2023-09-27 18:30:35

是否有某种布尔值可以用来检查表单的实例是否已加载,或者等到表单加载完毕?

例如:

While(form_loaded == false) {
  Try {
    //do something
  }
  catch {
  }//do try catch so code won't barf
}

我不断收到以下异常:

System.Windows.Forms 中发生了类型为"System.InvalidOperationException"的第一次机会异常.dll

System.Windows.Forms 中发生了类型为"System.InvalidOperationException"的未处理异常.dll

其他信息:在创建窗口句柄之前,无法在控件上调用InvokeBeginInvoke

这就是我所担心的。

此外,如果需要更详细的解释,我可以尝试发布一些代码和/或更多输出调试信息。

等待表单加载完成

尝试使用显示的事件,

如下所示
 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Shown += new System.EventHandler(this.Form1_Shown);
    }
    private void Form1_Shown(object sender, EventArgs e)
    {
    }
}

希望这个帮助

表单完全加载后触发的第一个事件是 Shown 事件。 用它...


根据 MSDN,事件序列为:

应用程序启动时:

  • 控件.句柄创建
  • Control.BindingContextChanged
  • 表单加载
  • 控件.可见更改
  • 表单已激活
  • 表格所示

当应用程序关闭时:

  • 表单.结束语
  • 表单
  • .表单关闭
  • 表单.已关闭
  • 表单.表单已关闭
  • 表单.停用

正如@Henk Holterman在他的回答中所说,不要以事件驱动的形式使用忙碌的等待......

您有一个Loaded和一个Shown事件可供选择。

Windows 是事件驱动的,因此永远不要等待循环中的某些内容。