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é
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; } }
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 :