做showdialog后如何访问上一个表单?

jae*_*kie 3 c# forms winforms

难以解决这个问题..

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

在frmMain内部,我正在做

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

在frmLoading里面..我想访问frmMain ..我知道我可以在构造函数中传递前一个表单但我想尽可能避免这个...

以为它会是这个.所有者,或者说.Parent .. nope,搜索"this","Form"中的所有属性..找不到它..

任何的想法?

Han*_*ant 7

避免让Winforms猜测谁应该是所有者,明确说明:

frmLoading load = new frmLoading();
load.ShowDialog(this);
Run Code Online (Sandbox Code Playgroud)

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