0

我有一个 C# Windows Form 应用程序在使用默认代码执行时启动一个表单实例:

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

如果我在 Form1 上为 WindowState 属性使用默认值“Normal”,我可以为应用程序创建一个快捷方式并将 Run 属性设置为 Normal、Minimized 或 Maximized,这样就会得到尊重。

但是,如果应用程序没有通过快捷方式运行,我希望它默认最大化。但是,如果我将 WindowState 属性设置为 Maximized,则根本不再尊重快捷方式的 Run 属性。

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

谢谢。

4

1 回答 1

0

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

表格类:

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);
}
于 2015-01-06T18:19:07.943 回答