HOWTO · Csharp

Simular una pulsación de tecla en C#

En este artículo, aprenderemos una forma fácil y sencilla de simular una pulsación de tecla en C#.

Este artículo muestra un enfoque rápido y sencillo para simular una pulsación de tecla en C#.

Durante la prueba, es posible que deba transmitir una secuencia de botones presionados (una pulsación de tecla) al objeto elegido: un control o una ventana. Puede simular pulsaciones de teclas a partir de pruebas de palabras clave y secuencias de comandos mediante la transmisión de códigos de teclas al control o ventana elegidos.

Crear una aplicación de formulario en C#

En primer lugar, cree una nueva aplicación de formulario de Windows en Visual Studio.

Abra su archivo de diseño .cs y cree una etiqueta llamada numberLabel y asígnele un texto que pueda ser "Text To Be Displayed", establezca su alineación en el centro central para que se vea limpio.

Vamos a crear numPadButton y alphabetButton, y añadir el texto "Click Me" a ambos botones. Haga doble clic en su numPadButton, que lo llevará a la función numPadButton_Click.

Dentro de esta función, asigna algún texto a la numberLabel. Este texto aparecerá una vez que se presione la tecla que asignaremos.

private void numPadButton_Click(object sender, EventArgs e) {
  numberLabel.Text = "Numpad Button 0 Pressed";
}

Realice los mismos pasos con el alphabetButton. Dentro de la función alphabetButton_Click, asigne a numberLabel un texto diferente, ya que este texto se mostrará en una tecla diferente presionada.

private void alphabetButton_Click(object sender, EventArgs e) {
  numberLabel.Text = "Enter Pressed";
}

Producción:

crear una aplicación de formulario en C#

Necesitamos habilitar la funcionalidad KeyPreview para nuestro formulario que determina si los eventos del teclado están registrados con el formulario o no. Por lo tanto, haga clic en todo el formulario y, desde el panel de propiedades a su derecha, establezca el valor KeyPreview en verdadero.

Luego, necesitamos un evento KeyDown que identifique y maneje el evento de pulsación de tecla, y para agregarlo, vaya al panel de propiedades y abra la pestaña de eventos con un símbolo de rayo. Desplácese hacia abajo hasta el evento KeyDown y haga doble clic en él.

Creará un método Form1_KeyDown() y lo llevará a este método. Este método toma dos argumentos, un sender de tipo object y un evento e de tipo KeyEventArgs.

private void Form1_KeyDown(object sender, KeyEventArgs e) {}

Ahora debemos usar el clic del botón para imitar la pulsación de una determinada tecla. Esta función recibirá la tecla presionada, y verificaremos si la clave recibida es NumPad0 y luego realizaremos el clic en numPadButton.

if (e.KeyCode == Keys.NumPad0) {
  numPadButton.PerformClick();
}

Con el alphabetButton, tenemos que seguir el mismo proceso. Entonces, desde la pestaña de eventos, haga doble clic en el evento KeyUp, y dentro de la función Form1_KeyUp(), verifique si la clave recibida es Enter, luego haga clic en el alphabetButton.

using System;

namespace SimulateKeyPress {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void numPadButton_Click(object sender, EventArgs e) {
      numberLabel.Text = "Numpad Button 0 Pressed";
    }

    private void alphabetButton_Click(object sender, EventArgs e) {
      numberLabel.Text = "Enter Pressed";
    }

    private void Form1_KeyDown(object sender, KeyEventArgs e) {
      if (e.KeyCode == Keys.NumPad0) {
        numPadButton.PerformClick();
      }
    }

    private void Form1_KeyUp(object sender, KeyEventArgs e) {
      if (e.KeyCode == Keys.Enter) {
        alphabetButton.PerformClick();
      }
    }

    private void numberLabel_Click(object sender, EventArgs e) {}
  }
}

Producción:

Cuando se presiona el Numpad 0 desde el teclado.

teclado numérico 0 se presiona desde el teclado

Cuando se presiona Enter desde el teclado.

se presiona la tecla enter desde el teclado