Mysz kontroli rodzicielskiej Wprowadź / Opuść zdarzenia z kontrolkami dziecka

Mam aplikację WinForms C # .NET 2.0. Moja aplikacja ma formant, który jest kontenerem dla dwóch formantów podrzędnych: etykiety i pewnego rodzaju formantu edycji. Możesz myśleć o tym w ten sposób, gdzie zewnętrznym polem jest kontrola nadrzędna:

+---------------------------------+ 
| [Label Control]  [Edit Control] |
+---------------------------------+

Próbuję coś zrobić, gdy mysz wchodzi lub opuszcza kontrolę nad rodzicem, ale nie obchodzi mnie, czy mysz przenosi się do jednego ze swoich dzieci. Chcę, aby pojedyncza flaga reprezentowała „mysz jest gdzieś wewnątrz rodzica lub dzieci”, a „mysz poruszyła się poza granice kontroli rodzica”.

Próbowałem obsługiwać MouseEnter i MouseLeave na kontrolce rodzica i obu elementach podrzędnych, ale to oznacza, że ​​akcja zaczyna się i kończy wiele razy, gdy mysz porusza się po kontrolce. Innymi słowy, rozumiem to:

Parent.OnMouseEnter      (start doing something)
Parent.OnMouseLeave      (stop)
Child.OnMouseEnter       (start doing something)
Child.OnMouseLeave       (stop)
Parent.OnMouseEnter      (start doing something)
Parent.OnMouseLeave      (stop)

Pośrednie zdarzenia OnMouseLeave powodują niepożądane efekty, ponieważ cokolwiek robię, jest uruchamiane, a następnie zatrzymywane. Chcę tego uniknąć.

Nie chcę przechwytywać myszy, gdy rodzic przesuwa kursor myszy, ponieważ kontrolki podrzędne potrzebują zdarzeń myszy, a ja chcę, aby menu i inne klawisze skrótów działały.

Czy można to zrobić w ramach .NET? A może muszę skorzystać z haka myszy Windows?

questionAnswers(5)

yourAnswerToTheQuestion