2009-02-19 8 views
1

Ceci est un peu spécifique à C#. Le comportement par défaut d'une boîte de dialogue redimensionnable est qu'un clic de barre de titre maximise la boîte de dialogue et un second double clic restaure la taille. Cependant, ce que je veux, c'est que le bouton d'aide soit activé, ce qui signifie que les boutons minimiser et maximiser sont masqués, mais j'aimerais quand même que la barre de titre double le comportement du double clic. Cela pourrait être réalisable avec quelques sous-classes, mais peut-être que quelqu'un a de bonnes idées à ce sujet.Autoriser une barre de titre double-cliquer pour agrandir une boîte de dialogue mais sans les boutons max-min

Répondre

2
private const int WM_NCLBUTTONDBLCLK = 0xA3; 

    protected override void WndProc(ref Message m) 
    { 
     switch (m.Msg) 
     { 
      case WM_NCLBUTTONDBLCLK: 
       if (this.WindowState==System.Windows.Forms.FormWindowState.Maximized) 
        this.WindowState=System.Windows.Forms.FormWindowState.Normal; 
       else if (this.WindowState == System.Windows.Forms.FormWindowState.Normal) 
        this.WindowState = System.Windows.Forms.FormWindowState.Maximized; 
       return; 
     } 
     base.WndProc(ref m); 
    } 
2

Vous devriez pouvoir gérer le WM_NCHITTEST et rechercher HT_CAPTION, voir WM_NCHITTEST message pour plus de détails.

Vous devrez remplacer le WndProc pour pouvoir traiter ces messages, ceci est illustré dans Control.WndProc Method.

+0

Merci, qui a aidé, sauf qu'il avait besoin d'être remplacé par WM_NCLBUTTONDBLCLK –

+0

qui est en supposant bien sûr que votre utilisateur n'a pas changé les boutons ... Je ne suis pas sûr si le système d'exploitation serait alors voir un clic droit, mais postez le message WM_NCLBUTTONDBLCLK. –

0
private const int WM_NCHITTEST = 0x0084; 

    // Let Windows drag this form for us 
    protected override void WndProc(ref Message m) 
    { 
     switch (m.Msg) 
     { 
      case WM_NCHITTEST: 
       m.Result = (IntPtr)2; // HTCLIENT 
       return; 
     } 

     base.WndProc(ref m); 
    } 
Questions connexes