Hallo Leute!
Ich suche eine Möglichkeit, wie ich überprüfen kann, ob sich die Maus bei schnellen Bewegungen über einem ControlContainer befindet oder nicht. Der Container enthält ein TableLayoutPanel, in dem sich zwei Buttons und zwei Label befinden. Das Control hat folgenden Aufbau:
Funktionsweise:
Mein Code:
Zustand1 ist kein Problem. Bei Zustand2 hab ich Probleme. Verknüpfe ich jedes Steuerelemnt mit dem dem MouseLeave-Handler, bekomme ich logischerweise eine Endlosschleife, sobald ich die Maus auf Button2 bewege. Füge ich dem Sub Container_MouseLeave nur den Handler MyBase.MouseLeave hinzu, ändert sich der Zustand des Containers nicht, wenn ich die Maus zu schnell über den Container bewege. Das heist, der Container wird unter Umständen als aktiv angezeigt, obwohl sich die Maus schon gar nicht mehr darüber befindet. Ich hab die Handler schon hin- und hergeschoben, MouseMove, Application.DoEvents, Container.SetStyle und Ähnliches ausprobiert. Aber es gelingt mir nicht, die Anzeige des Containers so hinzubekommen, dass er auch richtig angezeigt wird bei schnellen Mausbewegungen.
Für Eure Hilfe und Ideen wäre ich sehr dankbar.
Ich suche eine Möglichkeit, wie ich überprüfen kann, ob sich die Maus bei schnellen Bewegungen über einem ControlContainer befindet oder nicht. Der Container enthält ein TableLayoutPanel, in dem sich zwei Buttons und zwei Label befinden. Das Control hat folgenden Aufbau:
- Container (UserControl) : Padding All = 2
- TableLayoutPanel (TableLayoutPanel) : DockStyle = Fill
- Button1 (Button)
- Label1 (Label)
- Label2 (Label)
- Button2 (Button)
- Button1 (Button)
- TableLayoutPanel (TableLayoutPanel) : DockStyle = Fill
Funktionsweise:
- Zustand1: Maus über Container (ControlContainer ausgewählt) -> BackColor = Green; Button2 = sichtbar
- Zustand2: Maus nicht über Container (ControlContainer nicht ausgewählt) -> BackColor = Standard; Button2 = unsichtbar
Mein Code:
VB.NET-Quellcode
- Property IsSelected = False 'für weiteren Ablauf erforderlich
- 'Zustand 1
- Sub Container_MouseEnter (...) Handler JedesControl.MouseEnter
- Me.IsSelected = True
- Me.BackColor = Green
- Button2.Visible = True
- End Sub
- 'Zustand2
- Sub Container_MouseLeave (...) Handler JedesControl.MouseLeave
- Me.IsSelected = False
- Me.BackColor = SystemColors.Control
- Button2.Visible = False
- End Sub
Zustand1 ist kein Problem. Bei Zustand2 hab ich Probleme. Verknüpfe ich jedes Steuerelemnt mit dem dem MouseLeave-Handler, bekomme ich logischerweise eine Endlosschleife, sobald ich die Maus auf Button2 bewege. Füge ich dem Sub Container_MouseLeave nur den Handler MyBase.MouseLeave hinzu, ändert sich der Zustand des Containers nicht, wenn ich die Maus zu schnell über den Container bewege. Das heist, der Container wird unter Umständen als aktiv angezeigt, obwohl sich die Maus schon gar nicht mehr darüber befindet. Ich hab die Handler schon hin- und hergeschoben, MouseMove, Application.DoEvents, Container.SetStyle und Ähnliches ausprobiert. Aber es gelingt mir nicht, die Anzeige des Containers so hinzubekommen, dass er auch richtig angezeigt wird bei schnellen Mausbewegungen.
Für Eure Hilfe und Ideen wäre ich sehr dankbar.