当父级打开模态对话框时,有没有办法自动隐藏始终在线的无模式对话框?

时间:2009-09-07 09:23:08

标签: c# winforms modal-dialog modeless

我的C#Winforms应用程序有一个始终在线的无模式查找对话框。由于用户可以在无模式查找对话框打开时访问父窗口,因此他们也可以选择打开模式对话框。由于无模式对话框始终位于顶部,因此它模糊了模态对话框,但此时用户无法关闭无模式对话框,因为模态对话框会锁定用户与所有其他窗口的交互。

目前我正在通过在打开任何模态窗口之前手动添加代码来关闭无模式查找对话框来解决这个问题,我想知道是否有更好的解决方案?

2 个答案:

答案 0 :(得分:0)

如何在调用模态对话框之前使无模式对话框不是永远在顶部,然后恢复它?

modeless.TopMost = false;
// show modal dialog here
modeless.TopMost = true;

答案 1 :(得分:0)

查找对话框是否需要始终位于顶部?如果目的只是让它浮动在主窗体之上,那么将主窗体设置为查找对话框的父窗口是不是足够了?然后它总是在前面,而不必总是在顶部。

否则我会让查找对话框听取应用程序中发生的事情并采取相应的步骤。 (这可以通过多种方式解决,从应用程序中的所有表单的事件到通用基本表单到侦听系统范围内窗口激活/停用的CBT挂钩。)