如何在显示后立即安全地关闭表格?

时间:2012-04-30 07:40:37

标签: c# winforms

从我的主表单中,我在mouseclick上打开了几个其他表单,如下所示:

主要表格:

...
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

2 个答案:

答案 0 :(得分: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();
    }

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

答案 1 :(得分:2)

如果noDatafrmNewForm类的公共布尔属性,则可以执行以下操作:

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

有意义吗?