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

时间:2011-08-10 15:06:24

标签: c# winforms forms

无法搞清楚这个......

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

在frmMain内部显示的事件中,我正在做

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

里面frmLoading ..我想访问frmMain .. 我知道我可以在构造函数中传递前一个表单 但是如果可能的话,我想避免这样做..

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

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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