在MDI中,总是同时打开了两个窗口??

YangYun 2010-05-19 04:57:18
我设计了一个MDI程序,在主窗口上放置了工具栏,在工具栏上放置了一些按钮,每个按钮对应着打开一个窗口,但让人郁闷的事情发生了,点击任一按钮,除了打开了一个我期望的窗口外,还同时打开了一个另外的窗口(比如为A吧),如果我想打开A窗口,这时就同时打开了两个窗口A,也就是说,无论我点了哪一个生成子窗口的按钮,都同时生成了窗口A,以前这种事情是没发生的,是后来才发生的,这是为什么啊?


...全文
84 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
YangYun 2010-05-19
  • 打赏
  • 举报
回复
找到原因了,郁闷啦。原因是这样的。一般的按钮点按后生成的事件为tbConfigPackProgram_Click(object sender, EventArgs e)
,而窗口A的事件为:toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e),而这个toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
是toolstrip的Itemclick事件,我引用错了。因此只要点击了toolstip就会调用这个生成窗口A的命令
YangYun 2010-05-19
  • 打赏
  • 举报
回复
我单步调试了一下,发现就是某个窗口显示后,即MyForm.Show()语句后,马上又去执行了窗口A的调用代码,但我不知道是怎能么一下子跳到那儿去的,看来对调试器和执行过程不熟悉,现在找不到原因啊。
YangYun 2010-05-19
  • 打赏
  • 举报
回复
由于还处在刚设计难期,下面的代码基本相似,贴出来看看吧。

private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
Form MyForm = new ConfigPack();
MyForm.MdiParent = this;
MyForm.Show();

}

private void tbConfigPackProgram_Click(object sender, EventArgs e)
{
Form MyForm = new PackProgram();
MyForm.MdiParent = this;
MyForm.Show();

}

一样的,没区别,但就是只多生成了窗口A。
whowhen21 2010-05-19
  • 打赏
  • 举报
回复
如果不是代码的问题,那难道还是鼠标的问题呀~~~
zzx509 2010-05-19
  • 打赏
  • 举报
回复
没代码只能瞎猜原因了。
可能你的菜单点击事件注册了2次。
在设计界面时注册了一次,自己又写了一次。
也可能窗体是继承的,父窗体已经注册了菜单事件,在本窗体中又注册了一次。
YangYun 2010-05-19
  • 打赏
  • 举报
回复
我仔细看了一下主窗体中的代码,代码很简单,都是一样的,都是在按钮的CLICK事件里先生成期望的子窗口,然后show()就行了啊。
jsonzbc 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mohugomohu 的回复:]
那你就是先A.Show(),然后又if(A.ShowDialog()==DialogResult.OK)了,
把A.Show()去掉
[/Quote]
可能是楼上说的这个问题...
mohugomohu 2010-05-19
  • 打赏
  • 举报
回复
那你就是先A.Show(),然后又if(A.ShowDialog()==DialogResult.OK)了,
把A.Show()去掉
捷哥1999 2010-05-19
  • 打赏
  • 举报
回复
你把按钮的代码贴出来看看!
vicen25 2010-05-19
  • 打赏
  • 举报
回复
哎,分我要定了~哈哈哈~
vicen25 2010-05-19
  • 打赏
  • 举报
回复
代码写多了,或循环了两次~

110,536

社区成员

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

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

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