5

minimumMaximizeCloseボタンが無効になっているWinFormがありますが、それでも誰かがタスクバーでそれを押すと最小化されます。これを防ぎたい。

どうすればこれを達成できますか?

4

4 に答える 4

19

フォームのWndProcを上書きし、メッセージを最小限に抑えてキャンセルします。

次のコードをフォームに追加します。

private const int WM_SYSCOMMAND = 0x0112; 
private const int SC_MINIMIZE = 0xf020; 

 protected override void WndProc(ref Message m) 
{ 
    if (m.Msg == WM_SYSCOMMAND) 
    { 
        if (m.WParam.ToInt32() == SC_MINIMIZE) 
        { 
            m.Result = IntPtr.Zero; 
            return; 
        } 
    } 
    base.WndProc(ref m); 
} 

このSOスレッドにあるRobのコードを変更しました:
C#で最小化ボタンを無効にする方法は?

うまく機能します。ちらつきがなく、ユーザーが最小化しようとしても何も起こりません。

于 2010-09-17T16:29:52.853 に答える
4

SizeChangedイベントで変更しているのを見つけて、 WindowStateを確認し、 Minimizedに設定されている場合は、Normalに戻すことができます。最も洗練されたソリューションではありませんが、機能するはずです。

例えば。

private void myForm_SizeChanged(object sender, System.EventArgs e)
{
   if (myForm.WindowState == FormWindowState.Minimized)
   {
       myForm.WindowState = FormWindowState.Normal;
   }
}
于 2010-09-17T16:18:14.340 に答える
1

自分に適している場合は、タスクバーから非表示にします。ShowInTaskbar=false

于 2010-09-17T16:19:49.930 に答える
1

ウィンドウから最小化ボタンを削除するだけです。

以下のコードをFormクラスのprivatevoidInitializeComponent()メソッドに追加します。

            this.MinimizeBox = false;
于 2017-09-05T14:01:00.863 に答える