【问题标题】:How to access the previous form after doing showdialog?执行showdialog后如何访问以前的表单?
【发布时间】:2011-10-24 04:36:49
【问题描述】:

很难弄清楚这一点..

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

frmMain里面显示的事件,我在做

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

在 frmLoading.. 我想访问 frmMain.. 我知道我可以在构造函数中传递以前的表单 但如果可能的话,我想避免这种情况..

本以为是this.Owner,或者this.Parent..不,搜索了“this”,“Form”中的所有属性..找不到它..

有什么想法吗?

【问题讨论】:

    标签: c# winforms forms


    【解决方案1】:
    frmLoading load = new frmLoading();
    load.ShowDialog(this);
    

    之后

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        frmLoading 不知道 frmMain。 但是,如果您想从第二种形式更改主要形式的某事,则可以使用事件。 您需要将 frmMain 句柄传递给 frmLoading。

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

        【讨论】:

          猜你喜欢
          • 2012-10-25
          • 2016-04-23
          • 2021-09-09
          • 1970-01-01
          • 2015-01-12
          • 1970-01-01
          • 2016-07-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多