2

在我的一个代码中,我使用了一个表单的公共静态对象。在这段代码中,我在这个表单上使用了 Show() 和 Hide() 函数,因为只要主应用程序正在运行,我就不想关闭这个表单。现在,如果我从“任务管理器 - > 应用程序选项卡”关闭表单,此表单将被处理。我的功能如下:

public static fullScreen = null;

public FormFullScreen GetBackFullScreen()
{
if(fullScreen == null)
{
fullScreen = new fullScreen();
}

return fullScreen;
}

现在当我调用“GetBackFullScreen().Show()”时,我无法显示 Disposed Object 表单。有人可以提出解决方案吗?提前致谢。

4

2 回答 2

3
public static fullScreen = null;

public FormFullScreen GetBackFullScreen()
{
if(fullScreen == null || fullScreen.IsDisposed)
{
    fullScreen = new fullScreen();
}

return fullScreen;
}

获取表单是否被释放,如果是,则创建一个新实例。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.isdisposed.aspx

于 2013-06-23T11:27:10.300 回答
0

我不完全理解这里的问题,但也许你可以尝试以下方法:

public static fullScreen = null;

public FormFullScreen GetBackFullScreen()
{
    if(fullScreen == null)
    {
        fullScreen = new fullScreen();
        fullScreen.Closed += (s, e) => fullScreen = null;
    }
    return fullScreen;
}

这将确保无论何时关闭表单,都会清除支持字段,因此随后会创建一个新表单。

于 2013-06-23T11:37:30.293 回答