Csharp/C Sharp/Services Event/Key Event

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

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>