在我的一个代码中,我使用了表单的公共静态对象。在这段代码中,我在这个表单上使用了Show()和Hide()函数,因为只要主应用程序正在运行,我就不想关闭这个表单。现在,如果我从“任务管理器 - >应用程序选项卡”关闭表单,则此表单将被处理掉。我的功能如下:
public static fullScreen = null;
public FormFullScreen GetBackFullScreen()
{
if(fullScreen == null)
{
fullScreen = new fullScreen();
}
return fullScreen;
}
现在当我调用“GetBackFullScreen()。Show()”时,我得不到显示Disposed Object表单。有人可以提出解决方案吗?提前谢谢。
答案 0 :(得分: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
答案 1 :(得分:0)
我不完全理解这里的问题,但也许您可以尝试以下方法:
public static fullScreen = null;
public FormFullScreen GetBackFullScreen()
{
if(fullScreen == null)
{
fullScreen = new fullScreen();
fullScreen.Closed += (s, e) => fullScreen = null;
}
return fullScreen;
}
这将确保每当表单关闭时,后备字段都会被清除,从而随后会创建一个新表单。