1

我正在开发 WindowsFormApplication ,其中一个主窗体存在多个子窗体。我的一个表单生成报告,之后我想通过关闭作为报告生成的一部分调用的所有其他中间表单来调用我的父表单。当用户尝试使用通用关闭按钮“X”(用于关闭 Windows 操作系统中的通用窗口的按钮)关闭报表时,我想调用父窗口。

如何随时从我的任何子表单访问我的父表单/启动表单?以及当最后一个表单终止时,如何关闭除主表单之外的所有其他子表单?

有人请帮助我..在此先感谢..

4

2 回答 2

1

要在关闭最终表单时显示启动表单,您可以为FormClosed最终表单的事件添加事件处理程序,如下所示:

FinalForm f = new FinalForm();
f.FormClosed += (s,e) => {
   StartupForm sf = new StartupForm();
   sf.Show;
   //if your StartupForm is defined somewhere
   //just call sf.Show();
};
//If you are using VS 2005 or below, you have to define a method for FormClosed event handler (unable to use the lambda expression above
private void FormClosedHandler(object sender, FormClosedEventArgs e){
  StartupForm sf = new StartupForm();
   sf.Show;
   //if your StartupForm is defined somewhere
   //just call sf.Show();
}
//Register the FormClosed event with the event handler above
f.FormClosed += new FormClosedEventHandler(FormClosedHandler);

//show your final form
f.Show();
//if this form is closed, the event FormClosed will be raised and the corresponding event handler (we added above) will be called.
于 2013-07-20T07:29:22.707 回答
0

Winforms 应用程序中的 Application 对象有一个 OpenForms 集合,其中包含对所有打开的表单的引用。您可以从该集合中获取对表单的引用并在其上调用 Close() 以关闭它。

根据您的评论,在 finalreport 的 OnClosing 事件中,您可以运行此代码

foreach (Form f in Application.OpenForms)
            {
                if (f.GetType().ToString().Contains("start"))
                    f.Focus();
            }
于 2013-07-19T10:04:54.930 回答