2010-08-11 25 views

Répondre

2

C'est de par sa conception. Vous pouvez contourner le problème en utilisant, par exemple, MouseMove:

private void Form1_MouseMove(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
     Point pt = TargetControl.PointToClient(Cursor.Position); 
     Rectangle rc = TargetControl.ClientRectangle; 
     if (rc.Contains(pt)) 
     { 
      // do what would be done on MouseEnter 
     } 
    } 
} 

Ce n'est pas idéal, mais - si le bouton de la souris enfoncé lorsque la souris survole un autre contrôle sur la forme, il n » Il apparaît dans l'événement MouseMove que le bouton est enfoncé (comme l'a souligné @Hans, l'autre contrôle 'Capture' le MouseDown). Si c'est un problème, alors combiner le test de hit dans MouseMove tout en suivant séparément MouseDown et MouseUp sur le formulaire devrait fonctionner.

+0

Il n'y aura pas non plus de messages MouseMove. –

+0

@Hans - oui il y a, j'ai testé cela a fonctionné .. – stuartd

+0

Cliquez sur un contrôle Button, maintenez le bouton de la souris enfoncé, déplacez-le sur le formulaire pour voir ce que je veux dire. –