J'ai un formulaire Winform avec quelques contrôles dessus.
Lorsque le curseur entre dans le formulaire (limites du formulaire, y compris le contenu du formulaire), je veux déclencher une tâche spécifique. Lorsque le curseur quitte le formulaire, je veux déclencher une autre tâche.
Il est évident que le fait de placer ces événements sur le formulaire ne fonctionnera pas (parce que, par exemple, MouseLeave sera déclenché lorsque je passerai du formulaire lui-même à un autre contrôle).
this.MouseEnter += (sender, e) =>
{
//do stuff
};
this.MouseLeave += (sender, e) =>
{
//do stuff
};
J'ai essayé l'interface IMessageFilter comme cela apparaît dans des questions similaires, mais aucune ne me donne le résultat souhaité ! Le problème est de détecter quand la souris quitte complètement le formulaire.
public bool PreFilterMessage(ref Message m)
{
switch (m.Msg)
{
case WM_MOUSEMOVE: //or other messages
bool z = myForm.Bounds.Contains(Cursor.Position); //This didn't help
}
eturn false;
}
Il y a également un problème de détection dans le contenu du formulaire (lorsque je me déplace entre les contrôles).
Qu'est-ce que je rate ?
mise à jour : je ne veux pas utiliser de minuteurs !