我有一张带有完整图片的表格,可以帮助玩家查看游戏中拼图的位置。当我第二次显示它时,关闭它后,将抛出System.ObjectDisposedException。
当FormClosed事件发生时,我尝试使用Hide()方法,但是它没有帮助。另外,我从控件中删除了pictureBox,因为我认为这是导致此异常的原因,但也无济于事。
Original_px OrPix = new Original_px();
private void showFullPictureToolStripMenuItem_Click(object sender, EventArgs e)
{
OrPix.Show();
}
我希望此表单可以正常运行
答案 0 :(得分:1)
如果您关闭窗体,通过关闭右上角的图标或通过调用窗体Close()方法的代码,则变量 OrPix 将引用已关闭且已处置的对象。 您必须重新使用 new 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;
}