仅在子窗体关闭后如何执行代码? C#

时间:2019-09-25 09:00:41

标签: c# winforms

我在单击按钮时有一些代码会打开弹出窗口,而在单击同一按钮时有一些代码我只想在关闭弹出窗口后运行。

这里是一个例子。

private void SomeButton_Click(object sender, RibbonControlEventArgs e)
        {
            var assignCategory = new AssignCategory();
            assignCategory.Show();

        /// Some code to run only after assignCategory pop up is closed.
        }

我无法在/// some code上运行private void AssignCategory_FormClosed(object sender, FormClosedEventArgs e),因为只有在单击SomeButton的情况下,代码才会运行。

谢谢。

1 个答案:

答案 0 :(得分:3)

一旦显示了子窗体,方法Form.Show()将返回,直到子窗体关闭后才暂停执行。或者,您可以使用Form.ShowDialog()暂停执行,直到表单关闭。

您需要订阅子表单的Form.Closed事件,如果要异步运行两个Form,则应对其触发操作。

要仅在按下“确定”按钮后运行代码,您必须在子窗体中声明一个EventHandler,如下所示:

public event EventHandler OnOkClick;

然后在按钮的底部或特定点触发事件:

OnOkClick();

然后在您的主窗体构造器中订阅该事件