form的enable属性引起的现象,来帮忙解决下

wangcaidpjxwq 2010-09-10 04:31:42
因为程序中的提示窗口是以show()方式显示的,所以在提示正在进行的操作时,用户仍可以点击界面中的一些按钮,这时会导致一些异常信息。于是我在提示窗口弹出之后,将提示窗口的MDIparent的enable属性设置为FALSE,直到操作完成后再将MDIparent的enable属性设置回来。问题来了:在提示窗口关闭时,我的主窗口就被压到最底层了(就比方说我现在开着一个网页,本来程序执行的时候我的程序窗口是在网页上方,我看不到网页的。但是提示窗口关闭的时候程序窗口就在网页下方了,我看到的是网页而不是我的程序)。我必须要在MDIparent.enable=true;之后再写一句:MDIparent.show()我的程序窗口才会再次跑到最上面显示出来。有没有什么办法解决这个问题?
...全文
658 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangcaidpjxwq 2010-09-10
  • 打赏
  • 举报
回复
已经沉到海底了。。。。。。。。。。
wangcaidpjxwq 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bloodish 的回复:]
引用 4 楼 bloodish 的回复:
提示窗口Show(MDIparent),指定Parent,你会看到你想要的结果


不是最佳答案,感觉有些情况还有漏洞,建议..


C# code

Form infoDlg = new Form();
infoDlg .Show(MDIParent);
……
[/Quote]


想法不错,不过这个偏离了我的初衷了:我的意思是不通过showdialog()实现屏蔽主窗体按钮的功能。我之前通过设置主窗体的enable属性为FALSE来实现,但是引起了我所说了窗体被埋的副作用
wangcaidpjxwq 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyazhe 的回复:]
不太明白你的问题,设置TopMost为True可以么?
[/Quote]
topmost不能屏蔽主窗体的按钮事件
bloodish 2010-09-10
  • 打赏
  • 举报
回复
写错了
infoDlg.Owner.BringToFront();
bloodish 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bloodish 的回复:]
提示窗口Show(MDIparent),指定Parent,你会看到你想要的结果
[/Quote]

不是最佳答案,感觉有些情况还有漏洞,建议..
 
Form infoDlg = new Form();
infoDlg .Show(MDIParent);
infoDlg .FormClosed += (sender,e)=>
{
infoDlg.BringToFront();
}
bloodish 2010-09-10
  • 打赏
  • 举报
回复
提示窗口Show(MDIparent),指定Parent,你会看到你想要的结果
兔子-顾问 2010-09-10
  • 打赏
  • 举报
回复
不太明白你的问题,设置TopMost为True可以么?
wangcaidpjxwq 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyazhe 的回复:]
你就加上一句有多麻烦,能实现就可以了。换其他方式,例如用api:SetForegroundWindow,还要声明和调用,不论用什么都要调用的。你show已经是很简单的了。
[/Quote]
加我那一句是可以实现功能。可是效果不好,在提示窗口关闭的时候明显的看到窗口绘制,给人的感觉是程序要散架了一样,看着很不爽。我的意思是有没有办法让提示窗口不以showdialog()方式显示(因为这个窗口是会多次调用,并且没有返回值,所以一直都是用show()显示,用hide()隐藏)但是可以屏蔽主窗体的按钮
兔子-顾问 2010-09-10
  • 打赏
  • 举报
回复
你就加上一句有多麻烦,能实现就可以了。换其他方式,例如用api:SetForegroundWindow,还要声明和调用,不论用什么都要调用的。你show已经是很简单的了。

111,129

社区成员

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

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

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