Freigeben über


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

  1. 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;
        }
    }
    
  2. 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:

Siehe auch

Konzepte

Entwickeln benutzerdefinierter Steuerelemente

Gewusst-wie-Themen für .NET Compact Framework