【问题标题】:Dialog shows behind parent in Windows 10 Tablet Mode对话框在 Windows 10 平板电脑模式下显示在父级后面
【发布时间】:2016-01-06 18:58:43
【问题描述】:

我有一个带有显示对话框的表单的 Winforms 应用程序:

using (MyForm form = new MyForm)) {
   form.ShowDialog(this);
}

显示的对话框具有以下属性:

StartPosition = CenterParent
ControlBox = True
MaximizeBox = True
MinimizeBox = True
FormBorderStyle = Sizable

通常,表单以模态方式显示在调用表单的顶部。但是,当在平板电脑模式下的 Windows 10 中运行时(例如在移除键盘的 Surface Pro 3 上),表单会显示在调用表单的后面,并且无法访问它,因为一切都是全屏的。

我是否可以更改任何设置来防止这种行为(除了告诉用户不要使用平板电脑模式)?

【问题讨论】:

  • 这是一个未经测试的解决方法——将以下代码添加到对话框类的Load 事件处理程序:BeginInvoke((Action)(() => this.Activate()));(其中this 是对话框实例,因此将处理程序添加到MyForm 类,而不是调用类)
  • @adv12:好主意。试一试,但没有任何区别。
  • 无赖!那是我最好的猜测。祝你好运!

标签: c# winforms modal-dialog windows-10


【解决方案1】:

如果其他人偶然发现这个问题,正在 WPF 中寻找相同问题的解决方案:

在对话框上指定 ShowInTaskbar="False" 对我有用。

【讨论】:

    【解决方案2】:

    嗯,这很愚蠢。我查看了另一种显示为实际工作的对话框的表单。区别:

    MaximizeBox = False
    

    一旦您取消最大化表单的功能,它就会按照您的预期显示。有趣的是,从来没有必要能够最大化形式。它只是保留了默认值。

    【讨论】:

    • 如果我想让新窗口也最大化怎么办?
    • 在我的情况下,对话框不需要最大化,所以我不知道。
    • 即使没有最大化按钮,对话框也会在后台打开。
    猜你喜欢
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多