如何防止 C#/WinForms 应用程序中的子表单在平板电脑模式下最大化打开?

问题描述 投票:0回答:1

我有一个可打开子窗体的 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有一个意想不到的结果!我希望我自己的对话框是正常大小。

c# winforms tablet showdialog windowstate
1个回答
0
投票

Jimi 的评论包含了我问题的答案。在我所有表单的 OnLoad() 中设置 WindowState 解决了问题:

private void MyOwnDialog_Load(object sender, EventArgs e)
{
 WindowState = FormWindowState.Normal;
}

(不过我还是想知道,为什么Windows 11首先引入了如此奇怪的行为。)

© www.soinside.com 2019 - 2024. All rights reserved.