由于 ShowDialog 导致其他窗口也无法使用,寻求解决方案

RayLynn 2011-07-25 02:30:43
如果只要有一个窗口 ShowDialog 或者 MessageBox.Show ,执行过程将会被中断。

然而之前在任务栏已打开的窗口,将无法使用,请问这该如何处理。。


我尝试过QQ,他们都解决了这个问题。

首先打开一个聊天对话框,接着删除一个联系人,系统提示是否删除。此时激活已打开的聊天框依然可以正常使用。。

请高手解答!
...全文
268 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Just4life 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sdl2005lyx 的回复:]

LZ,模块对话框当然会阻塞其他的窗体,只能用show的方式,问题出来了:一闪就没有了!

问题处在可能:
1、用的是临时变量,超出作用域,自然就析构了。
2、窗体没有设置TopMost ,被别的顶层窗体盖住了。

解决办法:
1、 把你要显示的窗体临时成父级(一般是主框架窗体)的成员变量,并初始化,
在要显示的地方:设置TopMost =true,然后show。

2、……
[/Quote]

说的很清楚了
sdl2005lyx 2011-07-25
  • 打赏
  • 举报
回复
LZ,模块对话框当然会阻塞其他的窗体,只能用show的方式,问题出来了:一闪就没有了!

问题处在可能:
1、用的是临时变量,超出作用域,自然就析构了。
2、窗体没有设置TopMost ,被别的顶层窗体盖住了。

解决办法:
1、 把你要显示的窗体临时成父级(一般是主框架窗体)的成员变量,并初始化,
在要显示的地方:设置TopMost =true,然后show。

2、用多线程,你的窗体也可以showDialog。


RayLynn 2011-07-25
  • 打赏
  • 举报
回复
难道模态只能针对全局吗,不能指定某个窗口吗
言多必失 2011-07-25
  • 打赏
  • 举报
回复
非模态的,改为show,楼主说道QQ的 你仔细看看,QQ自定义多少控件,这个对话框我刚刚好写个,弹出对话框不一定都是你描述的那种模态的,
636f6c696e 2011-07-25
  • 打赏
  • 举报
回复
+1
看来楼主并没有搞清楚showdialog的关键点.
他的关键点是必须返回,才能操作其他控件,而并非"在最顶上".
qq的实现只不过没有用showdialog而已.
[Quote=引用 1 楼 assky124 的回复:]
用show,然后把弹出的窗体 TopMost 设置为True
[/Quote]
nkhuangyanping 2011-07-25
  • 打赏
  • 举报
回复
围观学习
Ultimate 2011-07-25
  • 打赏
  • 举报
回复
没有遇到过这个问题, 等待高手....
bdmh 2011-07-25
  • 打赏
  • 举报
回复
做成非模态的,你那个是模态的,会阻止其他操作,做成其他类型的
assky124 2011-07-25
  • 打赏
  • 举报
回复
用show,然后把弹出的窗体 TopMost 设置为True

110,536

社区成员

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

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

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