2012-01-17 18 views
23

Tôi muốn tạo ra một ứng dụng giao diện điều khiển sẽ hiển thị phím đó được nhấn trên màn hình giao diện điều khiển, tôi đã thực hiện mã này cho đến nay:Làm thế nào để xử lý sự kiện nhấn phím trong ứng dụng giao diện điều khiển

static void Main(string[] args) 
    { 
     // this is absolutely wrong, but I hope you get what I mean 
     PreviewKeyDownEventArgs += new PreviewKeyDownEventArgs(keylogger); 
    } 

    private void keylogger(KeyEventArgs e) 
    { 
     Console.Write(e.KeyCode); 
    } 

Tôi muốn biết , tôi nên nhập gì vào chính để tôi có thể gọi sự kiện đó?

Trả lời

20

Đối với giao diện điều khiển ứng dụng mà bạn có thể làm được điều này, các do while vòng lặp chạy cho đến khi bạn nhấn x

public class Program 
{ 
    public static void Main() 
    { 

     ConsoleKeyInfo keyinfo; 
     do 
     { 
      keyinfo = Console.ReadKey(); 
      Console.WriteLine(keyinfo.Key + " was pressed"); 
     } 
     while (keyinfo.Key != ConsoleKey.X); 
    } 
} 

này sẽ chỉ làm việc nếu console ứng dụng của bạn có tập trung. Nếu bạn muốn thu thập các sự kiện báo chí chính của hệ thống, bạn có thể sử dụng windows hooks

12

Thật không may là lớp Console không có bất kỳ sự kiện nào được xác định cho đầu vào của người dùng, tuy nhiên nếu bạn muốn xuất ký tự hiện tại đã được nhấn, bạn có thể làm như sau :

static void Main(string[] args) 
{ 
    //This will loop indefinitely 
    while (true) 
    { 
     /*Output the character which was pressed. This will duplicate the input, such 
      that if you press 'a' the output will be 'aa'. To prevent this, pass true to 
      the ReadKey overload*/ 
     Console.Write(Console.ReadKey().KeyChar); 
    } 
} 

Console.ReadKey trả về một đối tượng ConsoleKeyInfo, và tóm tắt rất nhiều thông tin về phím được nhấn.