Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Control.OnKeyPress (KeyPressEventArgs)

 

Publicado: octubre de 2016

Genera el evento KeyPress.

Espacio de nombres:   System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)

protected virtual void OnKeyPress(
	KeyPressEventArgs e
)

Parámetros

e
Type: System.Windows.Forms.KeyPressEventArgs

Objeto KeyPressEventArgs que contiene los datos del evento.

Cuando se genera un evento, se invoca el controlador de eventos a través de un delegado. Para obtener más información, consulte Controlar y provocar eventos.

El método OnKeyPress también permite que las clases derivadas controlen el evento sin adjuntar ningún delegado. Ésta es la técnica preferida para controlar el evento en una clase derivada.

Notas para desarrolladores de herederos:

Al reemplazar OnKeyPress en una clase derivada, asegúrese de llamar al método OnKeyPress de la clase base para que los delegados registrados reciban el evento.

El siguiente ejemplo de código utiliza el KeyPress eventos para evitar que los caracteres de escritura del control.

// Boolean flag used to determine when a character other than a number is entered.
private bool nonNumberEntered = false;

// Handle the KeyDown event to determine the type of character entered into the control.
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    // Initialize the flag to false.
    nonNumberEntered = false;

    // Determine whether the keystroke is a number from the top of the keyboard.
    if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
    {
        // Determine whether the keystroke is a number from the keypad.
        if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
        {
            // Determine whether the keystroke is a backspace.
            if(e.KeyCode != Keys.Back)
            {
                // A non-numerical keystroke was pressed.
                // Set the flag to true and evaluate in KeyPress event.
                nonNumberEntered = true;
            }
        }
    }
    //If shift key was pressed, it's not a number.
    if (Control.ModifierKeys == Keys.Shift) {
        nonNumberEntered = true;
    }
}

// This event occurs after the KeyDown event and can be used to prevent
// characters from entering the control.
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    // Check for the flag being set in the KeyDown event.
    if (nonNumberEntered == true)
    {
        // Stop the character from being entered into the control since it is non-numerical.
        e.Handled = true;
    }
}

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: