Simuler une pression sur une touche en C#

Saad Aslam 15 février 2024
Simuler une pression sur une touche en C#

Cet article présente une approche simple et rapide pour simuler une pression sur une touche en C#.

Lors des tests, vous devrez peut-être transmettre une séquence de boutons enfoncés (une frappe) à l’objet choisi - un contrôle ou une fenêtre. Vous pouvez simuler des frappes à partir de tests de mots-clés et de scripts en transmettant des codes de touches au contrôle ou à la fenêtre choisie.

Créer une application de formulaire en C#

Tout d’abord, créez une nouvelle application Windows Form dans Visual Studio.

Ouvrez votre fichier de conception .cs et créez une étiquette nommée numberLabel et attribuez-lui du texte qui peut être "Text To Be Displayed", définissez son alignement sur Milieu central pour avoir l’air propre.

Créons numPadButton et alphabetButton, et ajoutons le texte "Click Me" aux deux boutons. Double-cliquez sur votre numPadButton, ce qui vous dirigera vers la fonction numPadButton_Click.

Dans cette fonction, attribuez du texte au numberLabel. Ce texte apparaîtra une fois que la touche que nous attribuerons sera enfoncée.

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

Effectuez les mêmes étapes avec le alphabetButton. Dans la fonction alphabetButton_Click, attribuez au numberLabel un texte différent car ce texte sera affiché sur une touche différente enfoncée.

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

Production:

créer une application de formulaire en c#

Nous devons activer la fonctionnalité KeyPreview pour notre formulaire qui détermine si les événements de clavier sont enregistrés avec le formulaire ou non. Alors, cliquez sur l’ensemble du formulaire, et dans le panneau des propriétés sur votre droite, définissez la valeur KeyPreview sur true.

Ensuite, nous avons besoin d’un événement KeyDown qui identifiera et gérera l’événement de pression de touche, et pour l’ajouter, allez dans le panneau des propriétés et ouvrez l’onglet des événements avec un symbole d’éclair. Faites défiler jusqu’à l’événement KeyDown et double-cliquez dessus.

Il créera une méthode Form1_KeyDown() et vous dirigera vers cette méthode. Cette méthode prend deux arguments, un sender de type object et un événement e de type KeyEventArgs.

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

Maintenant, nous devons utiliser le clic du bouton pour imiter la pression d’une certaine touche. Cette fonction recevra la touche enfoncée, et nous vérifierons si la touche reçue est NumPad0 puis effectuerons le clic sur numPadButton.

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

Avec le alphabetButton, nous devons suivre le même processus. Ainsi, depuis l’onglet événements, double-cliquez sur l’événement KeyUp, et dans la fonction Form1_KeyUp(), vérifiez si la clé reçue est Enter, puis cliquez sur le 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) {}
  }
}

Production:

Lorsque le Numpad 0 est pressé depuis le clavier.

le pavé numérique 0 est enfoncé depuis le clavier

Lorsque la touche Enter est enfoncée depuis le clavier.

la touche entrée est enfoncée depuis le clavier

Auteur: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn

Article connexe - Csharp GUI