C# 打开封闭窗体

C# 打开封闭窗体,c#,forms,show,objectdisposedexception,C#,Forms,Show,Objectdisposedexception,我想知道如何使用此.Close重新打开已关闭的窗体。每次我试图使用Mainmenu.Show打开关闭的窗体时,异常都会引发一个错误,即无法访问已释放的对象。对象名称:主菜单 如何再次打开它?在窗体上调用Close方法时,您不能调用Show方法使窗体可见,因为窗体的资源已经释放。要隐藏窗体并使其可见,请使用Control.hide方法 如果要重新打开已关闭的表单,需要按照最初创建表单的方式重新创建表单: YourFormType Mainmenu=new YourFormType(); Mainm

我想知道如何使用此.Close重新打开已关闭的窗体。每次我试图使用Mainmenu.Show打开关闭的窗体时,异常都会引发一个错误,即无法访问已释放的对象。对象名称:主菜单

如何再次打开它?

在窗体上调用Close方法时,您不能调用Show方法使窗体可见,因为窗体的资源已经释放。要隐藏窗体并使其可见,请使用Control.hide方法

如果要重新打开已关闭的表单,需要按照最初创建表单的方式重新创建表单:

YourFormType Mainmenu=new YourFormType();
Mainmenu.Show();
在窗体上调用Close方法时,您不能调用Show方法使窗体可见,因为窗体的资源已被释放。要隐藏窗体并使其可见,请使用Control.hide方法

如果要重新打开已关闭的表单,需要按照最初创建表单的方式重新创建表单:

YourFormType Mainmenu=new YourFormType();
Mainmenu.Show();

不能显示封闭窗体。 您可以调用此。隐藏以关闭窗体。 稍后您可以调用form.Show


或者您需要重新创建表单。

您不能显示已关闭的表单。 您可以调用此。隐藏以关闭窗体。 稍后您可以调用form.Show


或者你需要重新创建表单。

我假设你有一个主表单,它创建了一个非模态子表单。由于此子窗体可以独立于主窗体关闭,因此可以有两种情况:

子窗体尚未创建,或已关闭。在本例中,创建表单并显示它。 子窗体已在运行。在这种情况下,您只需要显示它可能被最小化,并且您将希望恢复它。 基本上,主窗体应该通过处理其FormClosed事件来跟踪子窗体的生存期:


我假设你有一个主窗体,它创建了一个非模态子窗体。由于此子窗体可以独立于主窗体关闭,因此可以有两种情况:

子窗体尚未创建,或已关闭。在本例中,创建表单并显示它。 子窗体已在运行。在这种情况下,您只需要显示它可能被最小化,并且您将希望恢复它。 基本上,主窗体应该通过处理其FormClosed事件来跟踪子窗体的生存期:


上述智能代码的一个小补充

private void CreateOrShow()
{
    // if the form is not closed, show it
    if (_childForm == null || _childFom.IsDisposed ) 
    {
        _childForm = new ChildForm();

        // attach the handler
        _childForm.FormClosed += ChildFormClosed;
    }

    // show it
    _childForm.Show();
}

// when the form closes, detach the handler and clear the field
void ChildFormClosed(object sender, FormClosedEventArgs args)
{
    // detach the handler
    _childForm.FormClosed -= ChildFormClosed;

    // let GC collect it (and this way we can tell if it's closed)
    _childForm = null;
}

上述智能代码的一个小补充

private void CreateOrShow()
{
    // if the form is not closed, show it
    if (_childForm == null || _childFom.IsDisposed ) 
    {
        _childForm = new ChildForm();

        // attach the handler
        _childForm.FormClosed += ChildFormClosed;
    }

    // show it
    _childForm.Show();
}

// when the form closes, detach the handler and clear the field
void ChildFormClosed(object sender, FormClosedEventArgs args)
{
    // detach the handler
    _childForm.FormClosed -= ChildFormClosed;

    // let GC collect it (and this way we can tell if it's closed)
    _childForm = null;
}

我的目的是关闭表单并重新打开它。那么,如何打开已关闭的表单呢?如果要重新打开已关闭的表单,需要按照最初创建表单的方式重新创建它:YourFormType主菜单=新建YourFormType;主菜单。显示我的意图是关闭表单并重新打开它。那么,如何打开已关闭的表单呢?如果要重新打开已关闭的表单,需要按照最初创建表单的方式重新创建它:YourFormType主菜单=新建YourFormType;Mainmenu.show感谢您的提交,Azzam。请注意,一般情况下,编辑现有答案比添加新答案更可取,以便进行小的更新。Brett Wolfington感谢您通知我,非常感谢您的提交,Azzam。请注意,一般来说,编辑现有答案比添加新答案更为可取,以便进行小的更新。Brett Wolfington感谢您通知我,敬请谅解