Gewusst wie: Erstellen einer OnEnter-Funktionaliät
Aktualisiert: November 2007
.NET Compact Framework bietet keine Unterstützung für die OnEnter-Methode und die OnLeave-Methode für Steuerelemente. Da jedoch die OnMouseMove-Methode verwendet wird, können Sie diese und die Capture-Eigenschaft verwenden, um den Zeitpunkt festzulegen, wenn der Mauszeiger über das Steuerelement bzw. daraus heraus bewegt wird.
In diesem Beispiel wird ein einfaches benutzerdefiniertes Steuerelement, MouseCapture, definiert, das bei Mausbewegungen auf dem Steuerelement die Farbe Blau und bei Mausbewegungen außerhalb des Steuerelements die Farbe Hellgrau annimmt. Mithilfe der OnMouseMove-Methode wird festgelegt, ob sich die Mauskoordinate innerhalb von ClientRectangle befindet.
Beachten Sie, dass sich die Farbe nicht ändert, wenn Sie auf das Steuerelement und anschließend auf einen anderen Punkt tippen. Sie müssen die Maus ziehen, z. B. für einen Drag & Drop-Vorgang.
So erstellen und implementieren Sie das benutzerdefinierte Steuerelement
Fügen Sie dem Projekt das benutzerdefinierte MouseCapture-Steuerelement dem Projekt hinzu.
Public Class MouseCapture Inherits Control Public Sub New() Me.BackColor = Color.LightGray End Sub 'New ' If the mouse is over the control, Capture is true. Protected Overrides Sub OnMouseMove(e As MouseEventArgs) Me.Capture = Me.ClientRectangle.Contains(e.X, e.Y) If Me.Capture Then ' Blue indicates inside the control. Me.BackColor = Color.Blue Else Me.BackColor = Color.LightGray End If End Sub End Class
public class MouseCapture : Control { public MouseCapture() { this.BackColor = Color.LightGray; } // If the mouse is over the custom control, Capture is true. protected override void OnMouseMove(MouseEventArgs e) { this.Capture = this.ClientRectangle.Contains(e.X, e.Y); if (this.Capture == true) this.BackColor = Color.Blue; else this.BackColor = Color.LightGray; } }
Erstellen Sie im Konstruktor des Formulars oder für das Load-Ereignis eine Instanz von MouseCapture.
' Assumes mc has been delared ' for the form as type MouseCapture. Dim mc As New MouseCapture() mc.Parent = Me mc.Bounds = New Rectangle(20, 50, 100, 50)
// Assumes mc has been delared // for the form as type MouseCapture. mc = new MouseCapture(); mc.Parent = this; mc.Bounds = new Rectangle(20, 50, 100, 50);
Kompilieren des Codes
Für dieses Beispiel sind Verweise auf die folgenden Namespaces erforderlich: