从其他类中查找表单实例

时间:2013-07-07 17:03:53

标签: c# .net winforms

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

我在想:

  1. 当提交Form2时,我想找到MainForm实例并杀死该实例,然后它应该很容易,再次从数据库中加载数据列表并显示在列表框中。
  2. 问题是:

    如果创建了Form1,并且在某些事件上,Form2用showDialog实例化,那么Form1在提交数据之前是无效的,如何在Form2关闭之前找到Form1实例?

    再次,如何从Form2类中找到Form1类的实例?

    由于

2 个答案:

答案 0 :(得分:36)

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

Form form1 = Application.OpenForms[0];

或表格的Name属性如下:

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

希望这有帮助。

答案 1 :(得分:0)

如果你打电话

Form1.ShowDialog(this)

然后您将能够使用

获取对调用表单的引用
this.Owner.Name

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

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