在Windows 10平板模式下,对话框显示在父窗口后面

3

我有一个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
@adv12:好的想法。我试了一下,但没有任何改变。 - C-Pound Guru
糟糕!那是我最好的猜测。祝你好运! - adv12
2个回答

3

如果有其他人在寻找解决WPF中同样问题的方案,请注意:

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


0

这太蠢了。我看了一下另一个作为对话框显示的表单,它实际上是有效的。区别在于:

MaximizeBox = False

一旦您取消最大化表单的功能,它将显示为您所期望的样子。有趣的是,从来不需要能够最大化表单;它只是保留了默认值。


如果我想让新窗口也可以最大化,该怎么办? - tunafish24
在我的情况下,对话框不需要最大化,因此我不知道。 - C-Pound Guru
对话框即使没有最大化按钮也会在后台打开。 - Tomas Kubes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接