无法访问已释放对象

我有几个子窗体,它们通过Tab页的形式停靠在父窗体中。当我关闭某个子窗体后,如果再次打开相同的子窗体的话,就会出现无法访问已释放的对象的错误,请问各位这是怎么回事啊,大家在以前有没有碰到类似的问题~

.NET技术C#

问题补充: 我再次打开子窗体时,已经事先创建了。。 当我调用子窗体的Show()方法时,就出现了我所描述的错误。出现这种错误跟framework的版本有关系吗? 我的.net framework 是2.0 SP1


胡说叔叔
浏览 603回答 2
2回答

慕村9548890

WinForm 上的 Tab 控件?不知道你的“关闭”与“再次打开”是如何定义的。如果“打开”是完全新建的窗体(重先加载上次关闭时的配置数据),按理是不应该出现这样的情形。你说“相同的子窗体”,是不是你关闭 tab (或子窗体)时,释放了该子窗体,而在再次打开时,没有重先创建,而是直接引用?没能看到代码,大概猜测是盲目的。

慕哥6287543

当关闭窗体时窗体已经不存在了(对象已经释放),但是你show的时候,因为是static 的,所以对象还在,如此一来便冲突了。在关闭此窗体的时候将它赋值为null就OK,和版本没关系,要对症下药。嗯哼、 private void Form2_FormClosed(object sender, FormClosedEventArgs e)        {            f2 = null;        }
打开App,查看更多内容
随时随地看视频慕课网APP