Il arrive parfois que l'on veuille utilise l' évènements MouseLeave mais le problème est que l'évènement se produit même si la souris est sur un enfant du contrôle.
La souris est entré sur un contrôle enfant mais elle n'a pas quitté, à proprement parlé, le contrôle.
Voici donc un bout de code qui permet de pallier à ce soucis, sans grande prétention mais qui peut s'avérer très utiles, comme lorsque l'on veut cacher un panel quand la souris l'a quitté.
Source / Exemple :
//exemple de mouseleave
public void panel1_MouseLeave(object sender, EventArgs e)
{
Control tc = (Control)sender;
//Chercher l'enfant se trouvant à la position de la souris
Control child = tc.GetChildAtPoint(tc.PointToClient(Control.MousePosition));
//On teste si on a trouvé un enfant
if(child == null)
{
//Aucun enfant trouvé donc :
//on a vraiment quitté le contrôle !
//effectuer le code approprié
} else {
//On a quitté le panel1 mais on est sur un de ses enfants
//donc on ne l'a pas vraiment quitté
}
}
Conclusion :
Je met ce code parce que j'ai trouvé des gens qui vont jusqu'à créer des Hook de souris pour faire ce test alors qu'avec le framework on peut le faire tout simplement.
un exemple :
http://blog.bee-eee.com/2008/01/04/c-capture-the-mouse-get-a-global-hook-on-the-mouse/
Cordialement.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.