【问题标题】:find form instance from other class从其他类中查找表单实例
【发布时间】:2013-07-07 17:03:53
【问题描述】:

我有主窗体,其中包含列表框中的数据列表。单击按钮时,我正在打开新表单以创建新数据对象(主表单在后台处于非活动状态),当提交新数据时,主表单内的列表框应填充该新对象。

我在想:

  1. 提交 Form2 时,我想找到 MainForm 实例并杀死该实例,之后应该很容易,再次从 db 加载数据列表并显示在列表框中。

问题是:

如果创建了 Form1 并且在某些事件中使用 showDialog 实例化了 Form2,因此 Form1 在提交数据之前处于非活动状态,如何在 Form2 关闭之前找到 Form1 实例?

同样,如何从 Form2 类中找到 Form1 类的实例?

谢谢

【问题讨论】:

  • 你看过Application.OpenForms吗?

标签: c# .net winforms


【解决方案1】:

您可以使用Application.OpenForms 属性获取对应用程序当前打开的任何表单的引用。 Forms 在这个 FormCollection 可以通过索引访问,如下所示:

var form1 = Application.OpenForms[0];

或通过表单的Name 属性,如下所示:

Form form1 = Application.OpenForms["Form1"];

希望这会有所帮助。

【讨论】:

  • 如果表单是动态创建的呢?
【解决方案2】:

如果你打电话

Form1.ShowDialog(this)

然后您将能够获得对调用表单的引用

this.Owner.Name

在第二种形式(在您的情况下为 Form2)

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.showdialog.aspx

【讨论】:

  • 无论你的调用表单是什么,调用 ShowDialog() 以调用表单作为所有者
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 2020-03-28
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多