Cómo: Crear la funcionalidad OnEnter
Actualización: noviembre 2007
.NET Compact Framework no admite los métodos OnEnter y OnLeave para controles. Sin embargo, puesto que admite el método OnMouseMove, se puede utilizar junto con la propiedad Capture para determinar cuándo el puntero del mouse entra en el control o sale del mismo.
En este ejemplo se define un control personalizado simple, MouseCapture, que adquiere el color azul cuando los movimientos del mouse se producen dentro del control, y el color gris claro cuando tienen lugar fuera del mismo. Determina si la coordenada del mouse está en la propiedad ClientRectangle utilizando el método OnMouseMove.
Observe que el punteo dentro y fuera del control no cambiará su color. Se debe arrastrar el mouse, como en el caso de una operación de arrastrar y colocar.
Para crear e implementar el control personalizado
Agregue el control MouseCapture personalizado al proyecto.
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; } }
Cree una instancia de MouseCapture en el constructor del formulario o para su evento 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);
Compilar el código
Para este ejemplo se requieren referencias a los siguientes espacios de nombres: