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

KeyEventArgs (Clase)

Actualización: noviembre 2007

Proporciona datos para el evento KeyDown o KeyUp.

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

KeyEventArgs , que especifica la tecla que el usuario presionó y si se presionaron cualquiera de las teclas modificadoras (CTRL, ALT y MAYÚS) al mismo tiempo, se pasa con cada evento KeyDown o KeyUp.

El evento KeyDown tiene lugar cuando el usuario presiona cualquier tecla. El evento KeyUp se produce cuando el usuario suelta la tecla. Cada vez que se repite la tecla, cuando se mantiene presionada, se producen eventos KeyDown duplicados, pero sólo se genera un evento KeyUp cuando el usuario suelta la tecla.

El evento KeyPress también se produce cuando se presiona una tecla. KeyPressEventArgs se pasa con cada evento KeyPress y especifica el carácter creado cada vez que se presiona una tecla.

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

Los ejemplos de código siguientes muestran cómo detectar el estado de presión de una tecla.

Ejemplo 1

En el ejemplo de código siguiente se muestra cómo utilizar el evento KeyDown con la clase Help para mostrar Ayuda de estilo emergente al usuario de la aplicación. En el ejemplo se utilizan las propiedades KeyEventArgs pasadas al método controlador de eventos para filtrar todas las variaciones de presionar la tecla F1 con una tecla modificadora. Cuando el usuario presiona cualquier variación de F1 que incluye cualquier modificador de teclado, la clase Help muestra una ventana emergente, similar a ToolTip, junto al control. Si el usuario presiona ALT+F2, se muestra una Ayuda emergente distinta con información adicional.

private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    // Determine whether the key entered is the F1 key. If it is, display Help.
    if(e.KeyCode == Keys.F1 && (e.Alt || e.Control || e.Shift))
    {
        // Display a pop-up Help topic to assist the user.
        Help.ShowPopup(textBox1, "Enter your name.", new Point(textBox1.Bottom, textBox1.Right));
    }
    else if(e.KeyCode == Keys.F2 && e.Modifiers == Keys.Alt)
    {
        // Display a pop-up Help topic to provide additional assistance to the user.
        Help.ShowPopup(textBox1, "Enter your first name followed by your last name. Middle name is optional.",
            new Point(textBox1.Top, this.textBox1.Left));
    }
}


    // This example demonstrates how to use the KeyDown event with the Help 
    // class to display pop-up style help to the user of the application.
    // The example filters for all variations of pressing the F1 key with
    // a modifier key by using the KeyEventArgs properties passed to the
    // event handling method.When the user presses any variation of F1 that
    // includes any keyboard modifier, the Help class displays a pop-up window,
    // similar to a ToolTip, near the control. If the user presses ALT + F2,
    // a different Help pop-up is displayed with additional information.
    // This example assumes that a tTextBox control, named textBox1, has been
    // added to the form and its KeyDown event has been contected to this 
    // event handling method.
    private void textBox1_KeyDown(Object sender,
        System.Windows.Forms.KeyEventArgs e)
    {
        // Determine whether the key entered is the F1 key.
        //If it is, display Help.
        if (e.get_KeyCode().Equals(Keys.F1) && (e.get_Alt() || e.get_Control() 
            || e.get_Shift())) {
            // Display a pop-up Help topic to assist the user.
            Help.ShowPopup(textBox1, "Enter your name.", new Point(textBox1.
                get_Bottom(), textBox1.get_Right()));
        }
        else {
            if (e.get_KeyCode().Equals(Keys.F2) && e.get_Modifiers().
                Equals(Keys.Alt)) {
                // Display a pop-up Help topic to provide additional assistance
                // to the user.
                Help.ShowPopup(textBox1, "Enter your first name followed by" 
                    + " your last name.Middle name is optional.",new Point(
                    textBox1.get_Top(), this.textBox1.get_Left()));
            }
        }
    } //textBox1_KeyDown
} //Form1


Ejemplo 2

El ejemplo siguiente determina si el usuario presionó ALT+E y, si el puntero del mouse está encima de TreeNode, permite al usuario modificar TreeNode.

private void treeView1_KeyDown(object sender, KeyEventArgs e)
{
   /* If the 'Alt' and 'E' keys are pressed,
      * allow the user to edit the TreeNode label. */
   if(e.Alt && e.KeyCode == Keys.E)

   {
      treeView1.LabelEdit = true;
      // If there is a TreeNode under the mose cursor, begin editing. 
      TreeNode editNode = treeView1.GetNodeAt(
         treeView1.PointToClient(Control.MousePosition));
      if(editNode != null)
      { 
         editNode.BeginEdit();
      }
   }
}

private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
   // Disable the ability to edit the TreeNode labels.
   treeView1.LabelEdit = false;
}


private void treeView1_KeyDown(Object sender, KeyEventArgs e)
{
    /* If the 'Alt' and 'E' keys are pressed,
       allow the user to edit the TreeNode label. 
     */
    if (e.get_Alt() && e.get_KeyCode() == Keys.E) {
        treeView1.set_LabelEdit(true);
        // If there is a TreeNode under the mose cursor, begin editing. 
        TreeNode editNode = treeView1.GetNodeAt(treeView1.PointToClient(
            Control.get_MousePosition()));
        if (editNode != null) {
            editNode.BeginEdit();
        }
    }
} //treeView1_KeyDown

private void treeView1_AfterLabelEdit(Object sender, 
    NodeLabelEditEventArgs e)
{
    // Disable the ability to edit the TreeNode labels.
    treeView1.set_LabelEdit(false);
} //treeView1_AfterLabelEdit


Ejemplo 3

El ejemplo siguiente determina si el usuario presionó una tecla no numérica y, en ese caso, cancela el evento KeyPress utilizando la propiedad Handled.

// 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;
            }
        }
    }
}

// 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;
    }
}



// Boolean flag used to determine when a character other than a number 
// is entered.
private boolean 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.get_KeyCode().CompareTo(Keys.D0)) < 0 
        || (e.get_KeyCode().CompareTo(Keys.D9) > 0)) {

        // Determine whether the keystroke is a number from the keypad.
        if ((e.get_KeyCode().CompareTo(Keys.NumPad0) < 0 
            || (e.get_KeyCode().CompareTo(Keys.NumPad9)) > 0)) {

            // Determine whether the keystroke is a backspace.
            if (!(e.get_KeyCode().Equals(Keys.Back))) {
                    // A non-numerical keystroke was pressed.
                    // Set the flag to true and evaluate in KeyPress event.
                    nonNumberEntered = true;
            }
        }
    }
} //textBox1_KeyDown

// 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.set_Handled(true);
    }
} //textBox1_KeyPress


System.Object
  System.EventArgs
    System.Windows.Forms.KeyEventArgs
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