Csharp/C Sharp/Services Event/Key Event
An keypress event example
<source lang="csharp"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852
- /
// An keypress event example.
using System;
// Derive a custom EventArgs class that holds the key. class KeyEventArgs : EventArgs {
public char ch;
}
// Declare a delegate for an event. delegate void KeyHandler(object source, KeyEventArgs arg);
// Declare a key-press event class. class KeyEvent {
public event KeyHandler KeyPress; // This is called when a key is pressed. public void OnKeyPress(char key) { KeyEventArgs k = new KeyEventArgs(); if(KeyPress != null) { k.ch = key; KeyPress(this, k); } }
}
// A class that receives key-press notifications. class ProcessKey {
public void keyhandler(object source, KeyEventArgs arg) { Console.WriteLine("Received keystroke: " + arg.ch); }
}
// Another class that receives key-press notifications. class CountKeys {
public int count = 0; public void keyhandler(object source, KeyEventArgs arg) { count++; }
}
// Demonstrate KeyEvent. public class KeyEventDemo {
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("Enter some characters. " + "Enter a period to stop."); do { ch = (char) Console.Read(); kevt.OnKeyPress(ch); } while(ch != "."); Console.WriteLine(ck.count + " keys pressed."); }
}
</source>