【问题标题】:How to make a Custom Dialog stay on top of its parent without being on top of other applications如何使自定义对话框保持在其父级之上而不在其他应用程序之上
【发布时间】:2013-04-28 22:08:56
【问题描述】:

如果这个问题缺乏细节,我很抱歉。我不确定要给出哪些细节与问题的整体本质无关,即..

如何使一个表单始终位于另一个表单之上,而不使其位于所有表单之上(就像我将 'TopMost' 属性设置为 true 时的情况)

我使用的是 Microsoft Visual Studio 2012,这是一个 WinForms (Windows Forms) 应用程序。

【问题讨论】:

    标签: c# winforms visual-studio


    【解决方案1】:

    您可以像这样将“所有者”传递给 Show():

    MyCustomDialog.Show(this);
    

    *假设代码是由“父”表单执行的。

    【讨论】:

    • 我的原始代码已经这样做了。我可能没有将调用表单设置为父表单。我确实尝试过 MyCustomDialog.Parent = this;创建后,但出现编译错误。无论如何, ShowDialog();完全符合我的需要:)
    • 更正:我认为我的代码是在构造函数中传递调用表单(this),而不是显示。我的错。考虑到这一点,我回家后看看你的解决方案是否也有效。
    • 我有机会进行测试,这确实使表单保持在顶部,同时允许我与父表单交互。我更喜欢这个,所以我改变了我的代码来使用这个方法。
    【解决方案2】:

    我找到了答案……

    MyCustomDialog.ShowDialog();
    

    而不是...

    MyCustomDialog.Show();
    

    会达到预期的效果。

    【讨论】:

    • 这种显示子对话框的方式称为模态对话框。在这种情况下,您无法在显示子项时与父对话框交互。
    • 在这种情况下我可以接受。当我可以的时候,我会看看 Idle_Mind 的解决方案是做什么的,看看它是否更可取。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多