1

在我的主表单中,我在鼠标单击时打开了其他几个表单,如下所示:

主要形式:

...
private void btn_Click(object sender, EventArgs e){
    frmNewForm newForm = frmNewForm();
    newForm.Show();
}

在新表单中,我想检查是否有任何数据要显示,如果没有则立即关闭表单。新形式:

...
public frmNewForm(){
    InitializeComponent();

    // check if opening this form makes sense
    if(noData){
        Close();
    }
}

但是,我在以下位置抛出异常frmNewForm.Show():无法访问对象。

如果翻译与 Visual Studio 的不完全相同,我深表歉意:我正在使用另一种语言版本。

无论如何,我该怎么做才能安全关闭frmNewForm

4

2 回答 2

3

您不想在新表单的构造函数中执行此操作。相反,您需要在Load事件上执行此操作,以便在关闭它之前完成加载。

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

    private void Form1_Load(object sender, EventArgs e)
    {
        if (noData) this.Close();
    }

或者,如果您知道不需要打开表格,请在显示之前检查!

于 2012-04-30T07:43:26.867 回答
2

如果noData是您frmNewForm班级的公共布尔属性,您可以这样做:

if( !newForm.noData )
{
     newForm.Show();
}

有道理?

于 2012-04-30T07:46:13.630 回答