在线程中生成MDI窗口问题!

代码小鼠 2009-08-28 05:37:30
我想在主线程中利用委托生成一个MDI窗口,生成窗口代码如下:

delegate void CreatWindow();
private void CreatNewWindow()
{
if (this.InvokeRequired)
{
CreatWindow d = new CreatWindow(CreatNewWindow);
this.Invoke(d, new object[] { });
}
else
{
foreach (Form f in this.MdiParent.MdiChildren)
{
if (f is CheckUserKeyCertificate)
{
f.Activate();
f.Show();
this.Close();
return;

}
}
CheckUserKeyCertificate checkout = new CheckUserKeyCertificate();
checkout.MdiParent = this.MdiParent;
checkout.Show();
this.Close();

}
}

但,为什么我每次运行的时候,都会报出“未将对象引用设备到对象的实例”错误呢!
而且,我有窗口打开一次,关掉,再生成的时候,也会报这个错误!
请诸位帮忙!!!!
...全文
49 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dancingbit 2009-08-31
  • 打赏
  • 举报
回复
自身被销毁了,后面的显式的this隐式的this都成了null。
可以使用一个单独的窗体,专门用来管理其他窗体的创建与销毁。
fwqkey 2009-08-31
  • 打赏
  • 举报
回复
10
代码小鼠 2009-08-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dancingbit 的回复:]
关掉了自己,后面的代码执行自然会出错,this引用谁?
[/Quote]

this,引用的是当前窗口,那在当前窗口,创建一个新的窗口之后,当前窗口只能用hide()吗??
代码小鼠 2009-08-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dancingbit 的回复:]
自身被销毁了,后面的显式的this隐式的this都成了null。
可以使用一个单独的窗体,专门用来管理其他窗体的创建与销毁。
[/Quote]
嗯,解决了,多谢!
dancingbit 2009-08-30
  • 打赏
  • 举报
回复
关掉了自己,后面的代码执行自然会出错,this引用谁?
代码小鼠 2009-08-30
  • 打赏
  • 举报
回复
只是想在当前窗口,再新建一个窗口,然后把当前窗口关掉!在线程中,用委托不能这么做吗??
刚刚接触C#,请指教!
Knight94 2009-08-28
  • 打赏
  • 举报
回复
自己调自己?

最好重新整理一下程序的流程,然后再进行处理。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧