Récupérer la touche du clavier appuyée en C# 3.5
Après une assez longue pause dû à la fin d’année de la Licence et du stage, je recommence à avoir du temps pour m’occuper du blog. Désolé encore de l’absence.
Et je vais reprendre assez bien qui plus est. Comme je vois de plus en plus de personnes se penchant sur des fonctionnalités qui requiert la détection de la frappe d’une touche sur un clavier pour affecter un bind par exemple, je vous propose la manière de le faire en C# (je peux le montrer en Java si vous le demandez mais c’est plus simple). De plus il y a peu de tutoriel sur ce sujet, donc je pense qu’il ne sera pas trop redondant avec ce qu’il se fait déjà.
Donc pour détecter la touche qui est frappé sur le clavier et le mettre dans un textbox, voici le code à utiliser (ce code inclut les touches spéciales comme Ctrl, Alt, Enter, etc…) :
//Supposer que c'est le constructeur de la Windows Form
public MainFrame()
{
InitializeComponent();
//Pour faire en sorte que la touche soit affiché après tous les traitements (test ou autre)
this.KeyPreview = true;
clavier.MaxLength = 1;
//On rajoute le handler pour tester les touches
clavier.KeyDown += new KeyEventHandler(clavier_KeyDown);
}
private void clavier_KeyDown(object sender, KeyEventArgs e)
{
clavier.Clear();
//Test des touches "spéciales" et affectation de son nom dans la textbox
switch (e.KeyCode)
{
case Keys.F1:
clavier.Text = "F1";
break;
case Keys.F2:
clavier.Text = "F2";
break;
case Keys.F3:
clavier.Text = "F3";
break;
case Keys.F4:
clavier.Text = "F4";
break;
case Keys.F5:
clavier.Text = "F5";
break;
case Keys.F6:
clavier.Text = "F6";
break;
case Keys.F7:
clavier.Text = "F7";
break;
case Keys.F8:
clavier.Text = "F8";
break;
case Keys.F9:
clavier.Text = "F9";
break;
case Keys.F10:
clavier.Text = "F10";
break;
case Keys.F11:
clavier.Text = "F11";
break;
case Keys.F12:
clavier.Text = "F12";
break;
case Keys.ControlKey:
clavier.Text = "Control";
break;
case Keys.Alt:
clavier.Text = "Alt";
break;
case Keys.Back:
clavier.Text = "Backspace";
break;
case Keys.Enter:
clavier.Text = "Enter";
break;
case Keys.ShiftKey:
clavier.Text = "Shift";
break;
case Keys.Space:
clavier.Text = "Space";
break;
default:
break;
}
e.Handled = false;
}
Bien sûr dans le cadre d’un binder, il faudra limiter le taille de la textbox à un caractère, cela n’empêchera d’affecter un texte plus grand depuis le code.
Voilà, vous savez désormais détecter et afficher une touche qui a été appuyé sur le clavier !












