我有一个具有完整图片的表单,它可以帮助玩家看到在游戏中移动他们的难题的地方。当我第二次显示它时,在我关闭它之后,System.ObjectDisposedException被抛出。
当FormClosed事件发生时,我尝试使用Hide()方法,但没有帮助。此外,我从控件中删除了pictureBox,因为我认为它导致了这个异常,但它也没有帮助。
Original_px OrPix = new Original_px();
private void showFullPictureToolStripMenuItem_Click(object sender, EventArgs e)
{
OrPix.Show();
}
我希望此表单在没有此异常的情况下工作
发布于 2019-05-14 02:56:27
如果通过关闭右上角图标或通过调用表单Close()方法的代码关闭窗体,则变量OrPix将引用已关闭并已释放的对象。如果不使用新的Original_px();重新初始化变量,就不能重用它。
您需要知道表单何时关闭,并且可以接收处理FormClosed事件的信息,并将该变量设置为null。因此,当您需要再次(或第一次)显示它时,您应该检查该变量是否为null并重新初始化它
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;
}
https://stackoverflow.com/questions/56118290
复制相似问题