首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在第二次显示表单时摆脱System.ObjectDisposedException?

如何在第二次显示表单时摆脱System.ObjectDisposedException?
EN

Stack Overflow用户
提问于 2019-05-14 02:51:01
回答 1查看 56关注 0票数 0

我有一个具有完整图片的表单,它可以帮助玩家看到在游戏中移动他们的难题的地方。当我第二次显示它时,在我关闭它之后,System.ObjectDisposedException被抛出。

当FormClosed事件发生时,我尝试使用Hide()方法,但没有帮助。此外,我从控件中删除了pictureBox,因为我认为它导致了这个异常,但它也没有帮助。

代码语言:javascript
复制
Original_px OrPix = new Original_px();

        private void showFullPictureToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OrPix.Show();
        }

我希望此表单在没有此异常的情况下工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-14 02:56:27

如果通过关闭右上角图标或通过调用表单Close()方法的代码关闭窗体,则变量OrPix将引用已关闭并已释放的对象。如果不使用新的Original_px();重新初始化变量,就不能重用它。

您需要知道表单何时关闭,并且可以接收处理FormClosed事件的信息,并将该变量设置为null。因此,当您需要再次(或第一次)显示它时,您应该检查该变量是否为null并重新初始化它

代码语言:javascript
复制
Original_px OrPix = null;

private void showFullPictureToolStripMenuItem_Click(object sender, EventArgs e)
{
    if(OrPix == null)
    {
       OrPix = new Original_px();
       OrPix.FormClosed += PixClosed;
    }
    OrPix.Show();
}

private void PixClosed(object sender, FormClosedEventArgs e)
{
    OrPix = null;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56118290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档