如何在执行showdialog后访问以前的表单

本文关键字:表单 访问 执行 showdialog | 更新日期: 2023-09-27 18:05:12

搞不懂这个…

我目前有一个frmMain和一个frmLoading.

在frmMain显示事件中,我执行

frmLoading load = new frmLoading();load.ShowDialog(); 之前

里面frmLoading . .我想访问frommain ..我知道我可以在构造函数中传递之前的表单但如果可能的话,我想避免……

我以为会是这样。Owner,或者this.Parent…没有,搜索了"this","Form"中的所有属性…Could not find it.

任何想法?

如何在执行showdialog后访问以前的表单

避免让Winforms猜测谁应该是所有者,让它显式:

frmLoading load = new frmLoading();
load.ShowDialog(this);

现在您可以可靠地使用Owner属性在Load事件运行时查找所有者。如果您需要在构造函数中使用它,那么您将不得不将其作为构造函数参数传递,这当然不是问题,也是首选的解决方案,因为它不依赖于您使用的Show重载。考虑使用事件来避免耦合。

frmLoading不知道frmMain。但是,如果你想从第二种形式中改变形式,你可以使用事件。你需要把frmMain句柄传递给frmLoading。

看这里:http://forum.codecall.net/c-programming/515-c-calling-parent-functions-child-form.html

frmLoading load = new frmLoading();
load.ShowDialog(this);

Button yourbutton= ((frmLoading)this.Owner).yourbutton;
yourbutton.Text= "Okay";