Controlar la introducción de datos por el usuario

En este tema se describen los principales eventos de teclado y mouse que proporciona System.Windows.Forms.Control. Al controlar un evento, los creadores de controles deben reemplazar el método OnEventName protegido en lugar de asociar un delegado al evento. Para hacer un repaso de los eventos, vea Provocar eventos de un componente.

Nota:

Si no existen datos asociados a un evento, se pasa una instancia de la clase base EventArgs como argumento al método OnEventName.

Eventos de teclado

Los eventos de teclado comunes que el control puede controlar son KeyDown, KeyPress y KeyUp.

Nombre del evento Método que se va a invalidar Descripción del evento
KeyDown void OnKeyDown(KeyEventArgs) Se produce únicamente cuando se presiona una tecla por primera vez.
KeyPress void OnKeyPress

(KeyPressEventArgs)
Se produce cada vez que se presiona una tecla. Si la tecla se mantiene presionada, se produce un evento KeyPress a la velocidad de repetición que defina el sistema operativo.
KeyUp void OnKeyUp(KeyEventArgs) Se produce cuando se suelta una tecla.

Nota:

Controlar la entrada mediante teclado es mucho más complejo que invalidar los eventos de la tabla anterior y escapa al ámbito de este tema. Para más información, consulte Datos proporcionados por el usuario en Windows Forms.

Eventos del mouse

Los eventos del mouse que el control puede controlar son MouseDown, MouseEnter, MouseHover, MouseLeave, MouseMove y MouseUp.

Nombre del evento Método que se va a invalidar Descripción del evento
MouseDown void OnMouseDown(MouseEventArgs) Se produce cuando se presiona un botón del mouse mientras el puntero del mouse está sobre el control.
MouseEnter void OnMouseEnter(EventArgs) Se produce cuando el cursor del mouse entra por primera vez en la zona del control.
MouseHover void OnMouseHover(EventArgs) Se produce cuando el puntero pasa por encima del control.
MouseLeave void OnMouseLeave(EventArgs) Se produce cuando el puntero sale de la zona del control.
MouseMove void OnMouseMove(MouseEventArgs) Se produce cuando el puntero se desplaza por la zona del control.
MouseUp void OnMouseUp(MouseEventArgs) Se produce cuando se suelta el botón del mouse mientras el puntero está encima del control o sale de la zona del control.

En el siguiente fragmento de código se muestra un ejemplo de cómo se invalida el evento MouseDown.

protected override void OnMouseDown(MouseEventArgs e) {
    base.OnMouseDown(e);
    if (!allowUserEdit) {
        return;
    }
    Capture = true;
    dragging = true;
    SetDragValue(new Point(e.X, e.Y));
}
Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
    MyBase.OnMouseDown(e)
    If Not (myAllowUserEdit) Then
        Return
    End If
    Capture = True
    dragging = True
    SetDragValue(New Point(e.X, e.Y))
End Sub

En el siguiente fragmento de código se muestra un ejemplo de cómo se invalida el evento MouseMove.

protected override void OnMouseMove(MouseEventArgs e) {
    base.OnMouseMove(e);
    if (!allowUserEdit || !dragging) {
        return;
    }
    SetDragValue(new Point(e.X, e.Y));
}
Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
    MyBase.OnMouseMove(e)
    If (Not myAllowUserEdit Or Not dragging) Then
        Return
    End If
    SetDragValue(New Point(e.X, e.Y))
End Sub

En el siguiente fragmento de código se muestra un ejemplo de cómo se invalida el evento MouseUp.

protected override void OnMouseUp(MouseEventArgs e) {
    base.OnMouseUp(e);
    if (!allowUserEdit || !dragging) {
        return;
    }
    Capture = false;
    dragging = false;
    value = dragValue;
    OnValueChanged(EventArgs.Empty);
}
Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
    MyBase.OnMouseUp(e)
    If (Not myAllowUserEdit Or Not dragging) Then
        Return
    End If
    Capture = False
    dragging = False
    Value = dragValue
    OnValueChanged(EventArgs.Empty)
End Sub

Para obtener el código fuente completo del ejemplo FlashTrackBar, vea Crear un control de Windows Forms que muestre el progreso.

Consulte también