0

デフォルトのコードを使用して、実行時にフォームのインスタンスを起動する C# Windows フォーム アプリケーションがあります。

[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 に答える