从其他类中查找表单实例

本文关键字:表单 实例 查找 其他 | 更新日期: 2023-09-27 18:21:28

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

我在想:

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

问题是:

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

那么,如何从Form2类中找到Form1类的实例呢?

感谢

从其他类中查找表单实例

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

var form1 = Application.OpenForms[0];

或者通过表单的Name属性,如:

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

希望这能有所帮助。

在获得一个打开表单的实例后,我需要从该表单中调用一个方法,所以这对我来说很有效:

if (System.Windows.Forms.Application.OpenForms["Form1"] != null)
 { 
     Form1 form1 = Application.OpenForms["Form1"] as Form1;
     form1.yourMethodCall();
 }

如果您调用

Form1.ShowDialog(this)

然后你就可以通过获得呼叫表格的参考信息

this.Owner.Name

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

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