从其他类中查找表单实例
本文关键字:表单 实例 查找 其他 | 更新日期: 2023-09-27 18:21:28
我有一个在listBox中有数据列表的Main表单。点击按钮,我正在打开新表单以创建新的数据对象(主表单在后台处于非活动状态),当提交新数据时,主表单内的列表框应该填充该新对象。
我在想:
- 当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