Este tema aún no ha recibido ninguna valoración - Valorar este tema

KeyPressEventArgs (Clase)

Actualización: noviembre 2007

Proporciona datos del evento KeyPress.

Espacio de nombres:  System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)
[ComVisibleAttribute(true)]
public class KeyPressEventArgs : EventArgs
/** @attribute ComVisibleAttribute(true) */
public class KeyPressEventArgs extends EventArgs
public class KeyPressEventArgs extends EventArgs

KeyPressEventArgs especifica el carácter creado cuando el usuario presiona una tecla. Por ejemplo, cuando el usuario presiona MAYÚS + K, la propiedad KeyChar devuelve una K mayúscula.

Un evento KeyPress se produce cuando el usuario presiona una tecla. Dos eventos que están estrechamente relacionados con el evento KeyPress son KeyUp y KeyDown. El evento KeyDown precede a cada evento KeyPress cuando el usuario presiona una tecla, y un evento KeyUp se produce cuando el usuario suelta una tecla. Cuando el usuario mantiene presionada una tecla, se producen eventos KeyDown y KeyPress duplicados cada vez que se repite el carácter. Al soltar la tecla, se genera un evento KeyUp.

Con cada evento KeyPress, se pasa KeyPressEventArgs. KeyEventArgs se pasa con cada evento KeyDown y KeyUp. KeyEventArgs especifica si se presionaron teclas modificadoras (CTRL, MAYÚS o ALT) junto con otra tecla. (Esta información de las teclas modificadoras también puede obtenerse mediante la propiedad ModifierKeys de la clase Control.)

Establece Handled en true para cancelar el evento KeyPress. Esto evita que el control procese la acción de presionar la tecla.

66b3cw7x.alert_note(es-es,VS.90).gif Nota:

Algunos controles procesarán ciertas pulsaciones de teclas en KeyDown. Por ejemplo, RichTextBox procesa la tecla Entrar antes de que se llame a KeyPress. En casos como éste, no es posible cancelar el evento KeyPress y en su lugar debe cancelarse la pulsación de tecla desde KeyDown.

Para obtener información acerca del modelo de eventos, vea Eventos y delegados.

En el siguiente ejemplo se ilustra el uso de KeyPressEventArgs para contar teclas a medida que se presionan y mostrar el resultado después de presionar cada tecla. Handled se establece en true para evitar que el sistema operativo procese más la clave. En el ejemplo se supone la existencia de un formulario con un control TextBox colocado en él.

public class myKeyPressClass 
 {
     static long keyPressCount = 0 ;
     static long backspacePressed =  0;
     static long returnPressed = 0 ;
     static long escPressed = 0 ;
     private TextBox textBox1 = new TextBox();
     private void myKeyCounter(object sender, KeyPressEventArgs ex)
     {
     switch(ex.KeyChar)
     {
             // Counts the backspaces.
         case '\b':
         backspacePressed = backspacePressed + 1;
         break ;
             // Counts the ENTER keys.
         case '\r':
         returnPressed = returnPressed + 1 ;
         break ;
             // Counts the ESC keys.  
         case (char)27:
         escPressed = escPressed + 1 ;
         break ;
             // Counts all other keys.
         default:
         keyPressCount = keyPressCount + 1 ;
         break;
     }

     textBox1.Text = 
         backspacePressed + " backspaces pressed\r\n" + 
         escPressed + " escapes pressed\r\n" +
         returnPressed + " returns pressed\r\n" +
         keyPressCount + " other keys pressed\r\n" ;
     ex.Handled = true ;
     }
 }


public class MyKeyPressClass
{
    private static long keyPressCount = 0;
    private static long backspacePressed = 0;
    private static long returnPressed = 0;
    private static long escPressed = 0;
    private TextBox textBox1 =  new TextBox();

    private void MyKeyCounter(Object sender, KeyPressEventArgs ex)
    {
        switch(ex.get_KeyChar()) {
            // Counts the backspaces.
            case 'b' : 
                backspacePressed = backspacePressed + 1;
                break;
            // Counts the ENTER keys.
            case 'r' : 
                returnPressed = returnPressed + 1;
                break;
            // Counts the ESC keys.  
            case (char)(27) : 
                escPressed = escPressed + 1;
                break;
            default : 
                // Counts all other keys.
                keyPressCount = keyPressCount + 1;
                break;
        }

        textBox1.set_Text(backspacePressed + " backspaces pressed\r\n"
            + escPressed + " escapes pressed\r\n" + returnPressed
            + " returns pressed\r\n"+keyPressCount + " other keys pressed\r\n");
        ex.set_Handled(true);
    } //MyKeyCounter
} //MyKeyPressClass


Se debe crear una nueva instancia de esta clase. También se debe establecer el controlador de eventos. Esto se puede realizar en el constructor de la clase.

myKeyPressClass myKeyPressHandler = new myKeyPressClass();
public Form1()
{
     InitializeComponent();

     textBox1.KeyPress += new KeyPressEventHandler(myKeyPressHandler.myKeyCounter);
}


private MyKeyPressClass myKeyPressHandler = new MyKeyPressClass();
public Form1()
{
    InitializeComponent();
    textBox1.add_KeyPress(new KeyPressEventHandler(myKeyPressHandler.
        MyKeyCounter));
} //Form1


Al provocarse el evento especificado en el control, se llama al método asociado y la aplicación puede ejecutar código en respuesta al evento.

System.Object
  System.EventArgs
    System.Windows.Forms.KeyPressEventArgs
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0
¿Le ha resultado útil?
(Caracteres restantes: 1500)
Contenido de la comunidad Agregar