
{filelink=15054}
using System;
public class ExempleTouche
{
public static void Main()
{
KeyEvent kevt = new KeyEvent();
ProcessKey pk = new ProcessKey();
CountKeys ck = new CountKeys();
char ch;
kevt.KeyPress += new KeyHandler(pk.keyhandler);
kevt.KeyPress += new KeyHandler(ck.keyhandler);
Console.WriteLine("Tapez quelque chose pour sortir tapez 'Q'.");
do {
ch = (char) Console.Read();
kevt.OnKeyPress(ch);
} while(ch != 'Q');
Console.WriteLine(ck.count + " Touche(s) pressée(s).");
}
}
// Créer une classe personnalisé qui gère les touches appuyées.
class KeyEventArgs : EventArgs {
public char ch;
}
// Déclarer un 'délégué' pour les événements.
delegate void KeyHandler(object source, KeyEventArgs arg);
// Classe pour gérer les événements de 'KeyPress'.
class KeyEvent {
public event KeyHandler KeyPress;
// Cette méthode s'exécute lorsqu'une touche est pressée.
public void OnKeyPress(char key) {
KeyEventArgs k = new KeyEventArgs();
if(KeyPress != null) {
k.ch = key;
KeyPress(this, k);
}
}
}
class ProcessKey
{
public void keyhandler(object source, KeyEventArgs arg) {
Console.WriteLine("Les touches pressées: " + arg.ch);
}
}
class CountKeys {
public int count = 0;
public void keyhandler(object source, KeyEventArgs arg) {
count++;
}
}