ich habe hier ein Formular mit mehreren Panels, die je nach Ereignis sichtbar oder unsichtbar geschalten werden. In allen Panels will ich einen Inhalt anzeigen lassen, dazu gibts auch Buttons mit Datensatz vor/zurück, erster, letzter. Nun würde ich gerne noch das Scrollrad zusätzlich zu den Buttons benutzen. Mein Problem ist, dass ich z.b. "Handles Panel1.Mouseenter" und "Handles Panel1.MouseWheel" nicht zusammen bringe. Ich möchte damit erreichen, dass das Mousewheel-Ereignis nur dann ausgelöst wird, wenn der Mauszeiger über dem entsprechenden Panel steht.
Jetzt nur mal ins Unreine gesprochen, aber ich würde beim MouseEnter() eine Variable o.ä. setzen, so dass du im MouseWheel Event abfragen kannst, welches Element als letztes geentert wurde. Wenn es nur ein Panel ist, dann setz eine Variable auf true wenn MouseEnter() und auf false bei MouseLeave().
Auf die schnelle würde ich nun im MouseWheel() Event nachschauen, ob die Variable gesetzt ist und wenn ja, mit der Funktion zum Blättern weitermachen. Wäre jetzt schnell und schmutzig gelöst.
Gibt bestimmt noch eine elegantere Lösung die dir die üblichen Verdächtigen, wie gfoidl, Floyd, Mario, Falk und Co. bestimmt nennen können. :-)
Im MouseEnter-Ereignis kannst du den Control-Objekt aktivieren.
Private Sub _MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.MouseEnter, Panel2.MouseEnter CType(sender, Control).Select() End Sub
Dann sollte das MouseWheel-Ereignis beim selektierten Control ausgelöst werden.
+1 von mir. Funktioniert das auch wenn ich ein UserControl anlege und darin z.b. ein eingebettetes Feld scrollen möchte. Dann wäre es ja eine iterative Übergabe des select.