怎么在控制台中写段代码实现窗体中的按键功能?
高手指教!!

解决方案 »

  1.   

    1.设置form的属性form.KeyPreview = true;
    2.在为form添加Key事件,下面以KeyDown进行说明private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
       if (e.KeyData == Keys.A)    // 判断按键是否为A
       {
          MessageBox.Show(e.KeyValue.ToString());  显示按键的值
       }
    }大功告成
      

  2.   

    楼主说的是用控制台应用程序捕获键盘事件?
    给你一个捕获关闭控制台的事件供应参考
    1using System;
    2using System.Runtime.InteropServices;
    3using System.Threading;
    4using System.Diagnostics;
    5
    6namespace xmlpusher
    7{
    8  public delegate bool ConsoleCtrlDelegate(int dwCtrlType);
    9  /**////  <summary> 
    10  ///  Class1  的摘要说明。 
    11  ///  </summary> 
    12  class Class1
    13  {
    14     
    16    [DllImport("kernel32.dll")]
    17    private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine, bool Add);
    18    //一个 Ctrl+c 的信号被接收,该信号来自键盘,或来自 GenerateConsoleCtrlEvent函数 
    19    private const int CTRL_C_EVENT = 0;
    20    //一个 Ctrl + Break 信号被接收,该信号或来自键盘,或来自GenerateConsoleCtrlEvent函数 
    21    private const int CTRL_BREAK_EVENT = 1;
    22    //当用户关闭系统 Console 时,系统会发送此信号到此 
    23    private const int CTRL_CLOSE_EVENT = 2;
    24    //当用户退出系统时系统会发送这个信号给所有的Console程序。该信号不能显示是哪个用户退出。 
    25    private const int CTRL_LOGOFF_EVENT = 5;
    26    //当系统将要关闭时会发送此信号到所有Console程序 
    27    private const int CTRL_SHUTDOWN_EVENT = 6;
    28    ////  <summary> 
    29    ///  应用程序的主入口点。 
    30    ///  </summary> 
    31    [STAThread]
    32    static void Main(string[] args)
    33    {
    34      // 
    35      //  TODO: 在此处添加代码以启动应用程序 
    36      // 
    37      Class1 cl = new Class1();
    38    }
    39
    40    public Class1()
    41    {
    42      ConsoleCtrlDelegate newDategate = new ConsoleCtrlDelegate(HandlerRoutine);
    43      bool re = SetConsoleCtrlHandler(newDategate, true);
    44      if (re)
    45      {
    46        Console.WriteLine("Set SetConsoleCtrlHandler success!!");
    47      }
    48      else
    49      {
    50        Debug.WriteLine("Set SetConsoleCtrlHandler Error!!");
    51        AsReportFile.WriteFile("","test.txt","who close?");
    52      }
    53      Console.ReadLine();
    54    }
    55
    56    bool HandlerRoutine(int CtrlType)
    57    {
    58      switch (CtrlType)
    59      {
    60        case CTRL_CLOSE_EVENT:
    61          for (int i = 0; i < 100; i++)
    62          {
    63            Console.WriteLine("i is:{0}", i);
    64            Thread.Sleep(1000);
    65          }
    66          break;
    67      }
    68      return false;
    69    }
    70  }
    71}