我的数据库中有很多项目,在点击项目列表时获取项目名称,然后根据名称查看相应的项目信息。程序一直运行的好好的,昨天晚上突然有几个项目在加载窗体显示项目信息时,出现“创建窗口句柄时出错”的错误,而点击其他项目时又没有出现这样的问题,不知道是什么原因。
我加载窗体的代码如下:frmXiangMuData = new formXiangMuData();
if (frmXiangMuData.Visible == true)
    frmXiangMuData.Close();
frmXiangMuData.MdiParent = this;
frmXiangMuData.strXiangMuName = m_CurrentCellXiangMuName;
frmXiangMuData.Show();
frmXiangMuData.BringToFront();

解决方案 »

  1.   

    修改成启用非托管码调试,问题依旧。详细错误信息为:"System.OutOfMemoryException: 创建窗口句柄时出错。 ---> System.NullReferenceException: 未将对象引用设置到对象的实例。\r\n   在 System.Windows.Forms.NativeWindow.WindowClass.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)\r\n   在 System.Windows.Forms.UnsafeNativeMethods.IntCreateWindowEx(Int32 dwExStyle, String lpszClassName, String lpszWindowName, Int32 style, Int32 x, Int32 y, Int32 width, Int32 height, HandleRef hWndParent, HandleRef hMenu, HandleRef hInst, Object pvParam)\r\n   在 System.Windows.Forms.UnsafeNativeMethods.CreateWindowEx(Int32 dwExStyle, String lpszClassName, String lpszWindowName, Int32 style, Int32 x, Int32 y, Int32 width, Int32 height, HandleRef hWndParent, HandleRef hMenu, HandleRef hInst, Object pvParam)\r\n   在 System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)\r\n   --- 内部异常堆栈跟踪的结尾 ---\r\n   在 System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)\r\n   在 System.Windows.Forms.Control.CreateHandle()\r\n   在 System.Windows.Forms.Form.CreateHandle()\r\n   在 System.Windows.Forms.Control.get_Handle()\r\n   在 System.Windows.Forms.Form.SetVisibleCore(Boolean value)\r\n   在 System.Windows.Forms.Control.Show()\r\n   在 XiangMuGuanLi.formMain.DataManage_XiangMuShuJu() 位置 E:\\系统开发\\XiangMuGuanLi\\XiangMuGuanLi\\formMain.cs:行号 2229" string
      

  2.   

    异常的代码行号都给出来了啊,自己去查查。XiangMuGuanLi.formMain.DataManage_XiangMuShuJu()
    位置 E:\\系统开发\\XiangMuGuanLi\\XiangMuGuanLi\\formMain.cs:行号   2229 " string
      

  3.   

    E:\\系统开发\\XiangMuGuanLi\\XiangMuGuanLi\\formMain.cs:行号   2229 " string贴出你此出的代码.
      

  4.   

    这一行代码就是:
    frmXiangMuData.Show(); 
      

  5.   

    我通过不断测试,发现几个问题:
    一、如果去除frmXiangMuData.MdiParent = this;这句代码,运行没有问题;
    二、因为该子窗体(称A窗体)加载时设置了windowsstate为最大化显示,并且在加载此窗体前已经有另外一个子窗体(称B窗体)已经加载并最大化显示着(B窗体属于必须显示的那种,以便能够进行数据对照),我发现如果B窗体不处于最大化状态,则能够正常显示A窗体,一旦B窗体最大化后,再加载A窗体时,就出现如上错误。
    请问这是什么原因,如何能够使得在B窗体最大化时再加载A窗体不出现如上错误呢?谢谢!
      

  6.   

    IntPtr handle = frmMap.Handle;//加上这句看看
    frmXiangMuData.Show(); 
      

  7.   

    IntPtr handle = frmXiangMuData.Handle;//加上这句看看 
    frmXiangMuData.Show(); 
      

  8.   

    楼主 我出现和你一样的错误 请问你最后解决没有呢 请指教 我用的dotnetbar
      

  9.   

    一模一样的问题,不知道楼主解决了没有,求解!! 而且我的这个很奇怪,如果我是新建窗口的话,就会出现这样的问题,但是如果我拷贝已有的窗体,修改以后使用,就不会出问题,郁闷ing