Partager via


Comment : créer la fonctionnalité OnEnter

Mise à jour : novembre 2007

Le .NET Compact Framework ne prend pas en charge les méthodes OnEnter et OnLeave des contrôles. Toutefois, comme la méthode OnMouseMove est prise en charge, vous pouvez l'utiliser ainsi que la propriété Capture pour déterminer le moment où le pointeur de la souris entre dans le contrôle ou le quitte.

Cet exemple définit un contrôle personnalisé simple, MouseCapture, qui est bleu lorsque les déplacements de souris se produisent à l'intérieur du contrôle, et gris clair lorsqu'ils sont en dehors du contrôle. Il détermine si la coordonnée de souris est dans ClientRectangle à l'aide de la méthode OnMouseMove.

Notez que le fait de cliquer dans le contrôle et en dehors de celui-ci ne modifie pas sa couleur. Vous devez faire glisser la souris, comme pour une opération de glisser-déplacer.

Pour créer et implémenter le contrôle personnalisé

  1. Ajoutez le contrôle personnalisé MouseCapture à votre projet.

    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. Créez une instance de MouseCapture dans le constructeur du formulaire ou pour son événement Load.

    ' 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);
    

Compilation du code

Cet exemple nécessite des références aux espaces de noms suivants :

Voir aussi

Concepts

Développement de contrôle personnalisé

.Rubriques Comment relatives au .NET Compact Framework