【问题标题】:Is there a way to auto-hide a always-on-top modeless dialog when the parent opens a modal dialog?当父级打开模式对话框时,有没有办法自动隐藏始终在顶部的无模式对话框?
【发布时间】:2009-09-07 09:23:08
【问题描述】:

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

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

【问题讨论】:

    标签: c# winforms modal-dialog modeless


    【解决方案1】:

    在调用模式对话框之前让无模式对话框不总是在顶部,然后恢复它怎么样?

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-23
        • 2015-01-21
        • 1970-01-01
        • 2018-02-08
        • 1970-01-01
        • 1970-01-01
        • 2018-12-28
        • 1970-01-01
        相关资源
        最近更新 更多