我有一个可打开子窗体的 Windows 窗体应用程序。表单通过调用 Form.ShowDialog() 打开。
当应用程序在装有 Windows 11 的平板电脑上执行时,子窗体始终以最大化模式打开。这不是我想要的。
如何防止子窗体以最大化模式打开?
我写了一个小示例应用程序:
namespace DialogSizeTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// This shows a dialog in "normal" size even on Panasonic Tablet with Windows 11.
var dlg = new OpenFileDialog();
dlg.ShowDialog(this);
}
private void button2_Click(object sender, EventArgs e)
{
// This shows a maximized dialog on Panasonic Tablet with Windows 11. Why?
var dlg = new MyOwnDialog();
dlg.ShowDialog(this);
}
}
}
MyOwnDialg() 只是一个非常简单的 Windows 窗体,上面有一个标签。
我已使用该应用程序来测试以下配置:
测试# | 硬件 | Windows 版本 | 主要表格尺寸 | 文件打开大小 | 我自己的对话框大小 |
---|---|---|---|---|---|
1 | 笔记本电脑 | 11 | 正常 | 正常 | 正常 |
2 | 平板电脑 | 10(平板电脑模式开启) | 最大化 | 正常 | 正常 |
3 | 平板电脑 | 10(平板电脑模式关闭) | 正常 | 正常 | 正常 |
4 | 平板电脑 | 11 | 最大化 | 正常 | 最大化 |
测试 1、2、3 的结果符合我的预期。 测试4有一个意想不到的结果!我希望我自己的对话框是正常大小。
Jimi 的评论包含了我问题的答案。在我所有表单的 OnLoad() 中设置 WindowState 解决了问题:
private void MyOwnDialog_Load(object sender, EventArgs e)
{
WindowState = FormWindowState.Normal;
}
(不过我还是想知道,为什么Windows 11首先引入了如此奇怪的行为。)