我正在开发WindowsFormApplication,其中存在一个包含多个子窗体的主窗体。 我的一个表单生成报告,之后我想通过关闭作为报告生成的一部分调用的所有其他中间表单来调用我的父表单。我想在用户尝试使用常用关闭按钮“X”(用于关闭Windows操作系统中的公共窗口的按钮)关闭报告时调用父窗口。
如何随时从我的任何子表单访问我的parentform / startupform? 当Last form终止时,如何关闭除主表单之外的所有其他子表单?
有人请帮帮我.. 在此先感谢..
答案 0 :(得分: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.
答案 1 :(得分:0)
Winforms应用程序中的Application对象具有OpenForms集合,该集合包含对所有已打开表单的引用。您可以从该集合中获取对表单的引用,并在其上调用Close()来关闭它。
除了你的评论之外,在finalreport的OnClosing事件中你可以运行这段代码
foreach (Form f in Application.OpenForms)
{
if (f.GetType().ToString().Contains("start"))
f.Focus();
}