如何在不创建实例的情况下从其他表单访问最小化表单?

时间:2013-01-16 00:00:36

标签: c# .net winforms

在我的winforms应用程序中,我多次使用另一种形式的form.ActiveForm。这是因为我不想要表单的新实例,只是将表单放在前面或以不同方式设置它的组件。但是我注意到,当我最小化表单时,form.ActiveForm返回一个NullReferenceException。我能做什么才能访问这个最小化的表单?似乎没有一种方法。还有另一种方法吗?

3 个答案:

答案 0 :(得分:1)

将最小化的表单存储为主表单中的字段,并以该方式访问它。如果表单最小化,那么它不是“活动的”。但是,使用该字段,您仍然可以访问该字段。

答案 1 :(得分:1)

使用Application.OpenForms查找正确类型的表单:

foreach (var f in Application.OpenForms)
{
    if (f is MyForm)
    {
        // do something...
        break;
    }
}

答案 2 :(得分:0)

保存对最小化表单的引用。如果您愿意,可以通过创建公共属性来存储第二个表单:

public MyForm myForm;

然后设置它:

MyForm frm = new MyForm();
frm.myForm = (first form reference here);

然后第二个表单可以使用myForm直接引用第一个表单。