首页 > 解决方案 > 如何获取表单打开事件(WinForm)?

问题描述

我有这样的表格

public ManagerMainForm()
        {

            InitializeComponent();
...
}

因此,如果我MainForm打开应用程序并且一切正常,但我需要添加一个新表单作为弹出窗口。

public ManagerMainForm()
        {

            InitializeComponent();

           ....

            var dialog = new ValidationConfigDialog();
            dialog.ShowDialog();
...
}

现在这个ValidationConfigDialog(表格)打开得更快ManagerMainForm,因为ShowDialog它停止打开ManagerMainForm,直到我关闭它。

那么,我需要什么?我希望有一个OnFormLoaded事件(可能是一种回调)来通知我ManagerMainForm已经完全加载并可见,我可以运行另一个相应的进程。

所以,问题是 - 如何获得这样的事件或如何实现这样的逻辑,允许在表单加载后启动进程?

标签: c#winforms

解决方案


有一个很好的MSDN 页面,它告诉您打开表单时引发的事件的顺序。顺序是:

  • HandleCreated
  • BindingContextChanged
  • Load
  • VisibleChanged
  • Activated
  • Shown

由于您的问题是第二种形式显示得太早,我建议您选择最新的事件来执行显示第二种形式的代码。如果由于某种原因这不起作用,请尝试第二个最新的,依此类推。

例子:

Shown += (sender, args) => {
    var dialog = new ValidationConfigDialog();
    dialog.ShowDialog();
};

推荐阅读