2009-07-29 10 views

Répondre

2

Voici un exemple de code:

public partial class Form1 : System.Windows.Forms.Form 
{ 
    private const long BUTTON_DOWN_CODE = 0xa1; 
    private const long BUTTON_UP_CODE = 0xa0; 
    private const long WM_MOVING = 0x216; 

    static bool left_button_down = false; 

    protected override void DefWndProc(ref System.Windows.Forms.Message m) 
    { 
     //Check the state of the Left Mouse Button 
     if ((long)m.Msg == BUTTON_DOWN_CODE) 
      left_button_down = true; 
     else if ((long)m.Msg == BUTTON_UP_CODE) 
      left_button_down = false; 

     if (left_button_down) 
     { 
      if ((long)m.Msg == WM_MOVING) 
      { 
       //Set the forms opacity to 50% if user is moving 
       if (this.Opacity != 0.5) 
        this.Opacity = 0.5; 
      } 
     } 

     else if (!left_button_down) 
      if (this.Opacity != 1.0) 
       this.Opacity = 1.0; 

     base.DefWndProc(ref m); 
    } 
} 
3

Fait intéressant, vous pouvez aussi le faire dans le OnResizeBegin et OnResizeEnd remplace - cela s'applique à la fois le déplacement et le redimensionnement de la forme.

Si vous souhaitez modifier l'opacité uniquement lors du déplacement et non lors du redimensionnement, la réponse d'alex est meilleure.