C# Windows 窗体窗口状态与快捷方式的“运行”属性

本文关键字:运行 属性 快捷方式 Windows 窗体 窗口 状态 | 更新日期: 2023-09-27 18:36:22

我有一个 C# Windows 窗体应用程序,在执行时使用默认代码在执行窗体时启动窗体的实例:

[STAThread]
static void Main () {
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  Application.Run(new Form1());
}

如果我对 Form1 上的 WindowState 属性使用默认值"Normal",则可以为应用程序创建一个快捷方式,并将"运行"属性设置为"正常"、"最小化"或"最大化",并且将遵循它。

但是,如果应用程序不是通过快捷方式运行的,我希望默认情况下将其最大化。但是,如果我将 WindowState 属性设置为最大化,则根本不会考虑快捷方式的 Run 属性。

有没有办法处理这两种情况?

谢谢。

C# Windows 窗体窗口状态与快捷方式的“运行”属性

我找到了检测快捷方式设置的部分方法。部分我的意思是,如果您将WindowState设置为其他内容,则此方法似乎不适用于快捷方式中的Normal Window选项,然后在OnLoad事件中Normal。但是,它适用于MinimizedMaximized快捷方式选项。也许其他人能够解释这一点。

表单类:

bool windowStateSetByShortcut = false;
protected override void WndProc(ref Message m)
{
    /*WM_SIZE*/
    if (m.Msg == 0x0005)
    {
        // This will be set to true if the shortcut uses the Maximized or Minimized
        // options because then it runs before OnLoad.
        windowStateSetByShortcut = true;     
    }
    base.WndProc(ref m);
}
protected override void OnLoad(EventArgs e)
{    
    if (!windowStateSetByShortcut)
    {
        WindowState = FormWindowState.Normal;
    }
    base.OnLoad(e);
}