Winform 多MDI窗体关闭时,无法访问已释放的对象对象名:“Icon”

原创 2017年01月03日 15:21:51


无法访问已释放的对象对象名:“Icon”

在WINFORM开发中,对当打开多个MDI窗体,并且在最大化状态下关闭窗体时,常常出现以下异常:System.ObjectDisposedException:无法访问已释放的对象。

对象名:“Icon”。

   在 System.Drawing.Icon.get_Handle()

   在 System.Drawing.Icon.get_Size()

   在 System.Drawing.Icon.ToBitmap()

   在System.Windows.Forms.MdiControlStrip.GetTargetWindowIcon()

   在System.Windows.Forms.MdiControlStrip..ctor(IWin32Window target)

   在System.Windows.Forms.Form.UpdateMdiControlStrip(Boolean maximized)

   在System.Windows.Forms.Form.UpdateToolStrip()

   在 System.Windows.Forms.Form.OnMdiChildActivate(EventArgs e)

   在System.Windows.Forms.Form.ActivateMdiChildInternal(Form form)

   在System.Windows.Forms.Form.WmMdiActivate(Message& m)

   在System.Windows.Forms.Form.WndProc(Message& m)

   在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)

   在System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

   在System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtrwparam, IntPtr lparam)


这是.net框架的BUG,目前的解决方法是:

方法一:把窗体的controlbox属性,设为false就可以了.

方法二:窗体关闭的时候,

this.WindowState = FormWindowState.Normal; 
//设置FormWindowState.Normal,系统自动将所有子窗体设置为FormWindowState.Normal状态,需要下面的代码进行还原
//需要对显示的界面进行窗体状态还原
foreach (Form frm in mdiForm.MdiParent.MdiChildren)
{
   //需要显示的子窗体设为FormWindowState.Maximized;
}

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

微软bug解决方法:System.ObjectDisposedException: 无法访问已释放的对象。对象名:“Icon”

在WINFORM开发中,对当打开多个MDI窗体,并且在最大化状态下关闭窗体时,常常出现以下异常:System.ObjectDisposedException: 无法访问已释放的对象。对象名:“Icon...
  • xmzhaoym
  • xmzhaoym
  • 2009年09月29日 15:03
  • 10148

C#主窗体控件打开一个子窗体,子窗体关闭后,再重新打开子窗体出现:无法访问已经释放的对象

本文转载来自: http://blog.csdn.net/u013489804/article/details/44082527 主窗体一个按键按下显示一个子窗体; ...

C#主窗体控件打开一个子窗体,子窗体关闭后,再重新打开子窗体出现:无法访问已经释放的对象

主窗体一个按键按下显示一个子窗体; 在子窗体的FormClosing事件中添加: 这样就不会出现同时显示两个子窗体,并且关闭子窗体后,再次打开不会出现 ”无法访问已经释放的...

无法访问已释放的对象X.show()

把FrmSs1.Show()改为FrmSs1.ShowDialog()

Qt窗体关闭时,如何自动销毁窗体类对象

Qt窗体关闭时,如何自动销毁窗体类对象   2013-01-10 17:11:03|  分类: Qt |  标签:qt  关闭窗口  删除窗口  wa_deleteonclose  |举报|字号 订...

Qt窗体关闭时,如何自动销毁窗体类对象

http://blog.163.com/qimo601@126/blog/static/1582209320130105113647/ QMainWindow* ImgWindow1; Img...

C#在父窗口中调用子窗口的过程(无法访问已释放的对象)

来自:http://www.yiwuya.com/post/259.html C#在父窗口中调用子窗口的过程: 1、 创建子窗口对象 2、 显示子窗口对象 笔者的程序中,主窗体MainFrm通过菜单调...

C# Socket连接 无法访问已释放的对象

在进行Socket长连接时,若服务器或客户端出现异常时,另外一端对Socket对话进行操作时,程序会出现无法访问已释放的对象的问题。例如客户端出现问题主动断开Socket时,当服务器操作Socket时...
  • jjkliu
  • jjkliu
  • 2014年02月10日 09:20
  • 1325

winForm窗体关闭按钮实现托盘后台运行(类似QQ托盘区运行)

今天遇到了一个需求,如果用户不小心点击了“关闭”按钮,但是他的本意不是想要真的关闭这个窗体。   对这个需求完全可以在单击“关闭”按钮的时候弹出一个对话框,来让用户确定是否真的要退出。这是一个很好...
  • aboy123
  • aboy123
  • 2013年02月18日 13:52
  • 5114
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Winform 多MDI窗体关闭时,无法访问已释放的对象对象名:“Icon”
举报原因:
原因补充:

(最多只允许输入30个字)