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;
}

 

 

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

C# WinForm:无法访问已释放的对象

C#在父窗口中调用子窗口的过程: 1、 创建子窗口对象 2、 显示子窗口对象   笔者的程序中,主窗体MainFrm通过菜单调用子窗口ChildFrm。在窗体中定义了子窗口对象,然后在菜单...
  • c61999
  • c61999
  • 2012年11月06日 16:18
  • 11794

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

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

异常:无法访问已释放的对象。\r\n对象名:“System.Net.HttpWebResponse“

先上代码: /// /// 通过head请求获取远程图片的大小 /// /// 地址 /// 请求次数 ...
  • u010182052
  • u010182052
  • 2014年05月16日 18:08
  • 2329

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

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

小问题,大隐患 ——ASP的对象释放

初步接触ASP的程序,对于对象的使用还不是很清楚,发生了一些问题,在别人的帮助下得到了纠正,在此想作为一个忠告写出来,防止自己以后再出同样的错误。如果有不对之处还希望大家多多指正。对于ASP程序,有以...
  • zhdleo
  • zhdleo
  • 2004年09月09日 14:57
  • 954

单例模式解决无法访问已释放的对象

public class SingleTon where T : Form ,new() { private static T instance; ...
  • lchen1983
  • lchen1983
  • 2011年04月28日 11:41
  • 1668

JDK 提示 无法访问的语句

import java.io.*;public class SystemInTest ...{    public static void main (String[] args) throws Ex...
  • nyzhl
  • nyzhl
  • 2007年07月20日 17:47
  • 2409

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

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

C#socket通讯两个最经典错误解决方案

  1、经典错误之 无法访问已释放的对象。 对象名:“System.Net.Sockets.Socket” (1)、问题现场 (2)、问题叙述 程序中的某...
  • xsfqh
  • xsfqh
  • 2017年09月26日 10:53
  • 121

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

来自:http://www.yiwuya.com/post/259.html C#在父窗口中调用子窗口的过程: 1、 创建子窗口对象 2、 显示子窗口对象 笔者的程序中,主窗体MainFrm通过菜单调...
  • gaofang2009
  • gaofang2009
  • 2011年05月19日 09:52
  • 898
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Winform 多MDI窗体关闭时,无法访问已释放的对象对象名:“Icon”
举报原因:
原因补充:

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