1

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

4

3 回答 3

1

将最小化的表单作为一个字段存储在您的主表单中,并以这种方式访问​​它。如果表单被最小化,则它不是“活动的”。但是,使用该字段,您仍然可以访问它。

于 2013-01-16T00:05:18.743 回答
1

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

foreach (var f in Application.OpenForms)
{
    if (f is MyForm)
    {
        // do something...
        break;
    }
}
于 2013-01-16T00:20:03.307 回答
0

保存对最小化表单的引用。如果您愿意,可以通过创建公共属性将其存储在第二种形式中:

public MyForm myForm;

然后设置它:

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

然后第二种形式可以直接使用第一种形式引用myForm

于 2013-01-16T00:11:24.387 回答