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 属性。
有没有办法处理这两种情况?
谢谢。
我找到了检测快捷方式设置的部分方法。部分我的意思是,如果您将WindowState
设置为其他内容,则此方法似乎不适用于快捷方式中的Normal Window
选项,然后在OnLoad
事件中Normal
。但是,它适用于Minimized
和Maximized
快捷方式选项。也许其他人能够解释这一点。
表单类:
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);
}