Übergeordnete Steuerung Maus Ereignisse mit untergeordneten Steuerelementen eingeben / verlassen

Ich habe eine C # .NET 2.0 WinForms-App. Meine App verfügt über ein Steuerelement, das zwei untergeordnete Steuerelemente enthält: eine Bezeichnung und eine Art Bearbeitungssteuerelement. Sie können sich das so vorstellen, wobei das äußere Kästchen das übergeordnete Steuerelement ist:

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

Ich versuche etwas zu tun, wenn die Maus in das übergeordnete Steuerelement gelangt oder dieses verlässt, aber es ist mir egal, ob die Maus in eines der untergeordneten Steuerelemente bewegt wird. Ich möchte, dass ein einzelnes Flag "die Maus befindet sich irgendwo innerhalb des übergeordneten Elements oder der untergeordneten Elemente" und "die Maus wurde außerhalb der übergeordneten Steuerelementgrenzen verschoben" darstellt.

Ich habe versucht, MouseEnter und MouseLeave für die übergeordneten und die beiden untergeordneten Steuerelemente zu verwenden, dies bedeutet jedoch, dass die Aktion mehrmals beginnt und endet, wenn sich die Maus über das Steuerelement bewegt. Mit anderen Worten, ich verstehe folgendes:

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

Die OnMouseLeave-Zwischenereignisse verursachen einige unerwünschte Effekte, da alles, was ich tue, gestartet und dann gestoppt wird. Das möchte ich vermeiden.

Ich möchte die Maus nicht erfassen, wenn der übergeordnete Benutzer die Maus darüber bewegt, da die untergeordneten Steuerelemente ihre Mausereignisse benötigen und Menü- und andere Tastenkombinationen funktionieren sollen.

Gibt es eine Möglichkeit, dies innerhalb des .NET-Frameworks zu tun? Oder muss ich einen Windows-Maushaken verwenden?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage