MouseEnter-und MouseLeave-Ereignisse aus einem Panel und seine untergeordneten Steuerelemente
Ich habe eine Panel
untergeordnete Steuerelemente enthält.
Wenn ich mit Panel
's MouseEnter
und MouseLeave
Veranstaltungen und Ihr Kind ist MouseEnter
und MouseLeave
Veranstaltungen, die Ereignisse werden ausgelöst, in dieser Reihenfolge:
Panel.MouseEnter
Panel.MouseLeave
Child1.MouseEnter
Child1.MouseLeave
Panel.MouseEnter
Panel.MouseLeave
Aber ich muss die folgende Reihenfolge:
Panel.MouseEnter
Child1.MouseEnter
Child1.MouseLeave
Panel.MouseLeave
Ist das möglich?
InformationsquelleAutor der Frage DxCK | 2010-04-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie dont Geist, erstellen Sie ein Benutzersteuerelement(abgeleitet von der panel-oder anderen übergeordneten container, die Sie wünschen),
Überschreiben Ihrer Eltern
OnMouseLeave
Methode wie folgt Aussehen..Dann die event-Erhöhung werden in der gewünschten Reihenfolge.
InformationsquelleAutor der Antwort Mat J
Die Maus ist "verlassen" - panel, wie es in dem Kind die Kontrolle, die ist, warum es wird das Ereignis ausgelöst.
Könnte man hinzufügen, etwas entlang der folgenden Zeilen in der panel
MouseLeave
event-handler:InformationsquelleAutor der Antwort ChrisF
Die Lösung ist, um die Anzahl der betritt/verlässt.
In der Sie umfassende Kontrolle über einen Leistungsindikator hinzuzufügen:
In der MouseEnter-handler, dies zu tun:
In der MouseLeave-handler, dies zu tun:
tun und die oben MouseEnter-und MouseLeave-event-Handler für ALLE untergeordneten Steuerelemente sowie das enthaltende Objekt.
InformationsquelleAutor der Antwort RogerInHawaii
Matthäus die Antwort wird nicht immer funktionieren. Vor allem, wenn das untergeordnete Steuerelement am Rand seines Containers und die Maus bewegt sich aus der Steuerelemente in dieser Richtung. Sie werden nie erkennen, das MouseLeave-event.
Der beste Ansatz ist, erstellen Sie eine Benutzer-Steuerelement-container Haken Sie dann alle untergeordneten Steuerelemente' MouseEnter-und MouseLeave-Ereignisse, so dass Sie richtig erkennen kann, Wann und wo die Maus ist zu allen Zeiten. DANN, wenn er in Ihrem container die Grenzen feuern können Sie eine benutzerdefinierte MouseEnter-Ereignis, und wenn es Blätter MouseLeave-event.
InformationsquelleAutor der Antwort Jimmy T.
Dies ist vielleicht nicht die eleganteste Lösung, aber Sie könnte eine Eigenschaft in der übergeordneten Systemsteuerung (Unterklasse panel), der ein bool-Wert, wie "bool " ausgewählt". Dann, wenn das MouseEnter-für das panel feuert einstellen, dass es wahr ist...dann halt den mouseleave-Logik von feuern, es sei denn, es ist auf false gesetzt.
Beispiel
In der Realität würde ich nur das MouseLeave-Ereignis des untergeordneten stellen Sie den parameter.
Weder sind elegant, aber es funktioniert.
InformationsquelleAutor der Antwort JMcCarty
Glaube ich so. Ein nettes tool für die überprüfung Ihrer WinForms-Anwendung die Ereignisse.
Windows.Formulare Reihenfolge der Ereignisse
http://missico.spaces.live.com/blog/cns!7178D2C79BA0A7E3!186.Eintrag
InformationsquelleAutor der Antwort AMissico
Dies ist eine knifflige Sache, und wird schwer sein, den code und zuverlässig. Eine Idee ist, die "Erfassung" der 3 eingehende Ereignisse in einer Liste und führen Sie Ihre gewünschten code sobald die Liste vollständig ist (hat Sie die 3 gewünschten Ereignisse in der Liste). Dann, wenn Sie fertig sind, ausführen was auch immer code (oder vielleicht erfassen die combo der Ereignisse in umgekehrter Reihenfolge), Sie könnten die leere Ihrer Liste und haben Sie bereit für die nächste Zeit, insbesondere combo-Ereignis passiert. Nicht ideal, aber nur so ein Gedanke.
Natürlich, dass nicht das überwinden der potentiellen Auflösung Probleme & mögliche Ereignisse in Abwesenheit Hans angehoben. Vielleicht mehr Kontext ist in Ordnung.
InformationsquelleAutor der Antwort pinkeerach
Überprüfen Sie die untergeordnete Komponente..
InformationsquelleAutor der Antwort Yusuf ÇELİK
Jimmy T. richtig ist. Gibt es Probleme, wenn es keine (oder kleine) Raum betwean Übergeordneten Steuerung (Panel) - Rand-und-Kind-Kontrolle.
Dies ist, wie ich dieses problem lösen, UserControl abgeleitete Klasse:
InformationsquelleAutor der Antwort Dmitriy Zapevalov