相关疑难解决方法(0)

控制台应用程序的C#箭头键输入

我有一个用C#编写的简单控制台应用程序.我希望能够检测箭头按键,这样我就可以让用户转向.如何使用控制台应用程序检测keydown/keyup事件?

我所有的谷歌搜索都导致了关于Windows窗体的信息.我没有GUI.这是一个控制台应用程序(通过串口控制机器人).

我有编写函数来处理这些事件,但我不知道如何注册以实际接收事件:

  private void myKeyDown(object sender, KeyEventArgs e)
  {
      switch (e.KeyCode)
      {
          case Keys.Left:
                 ...
          case Keys.Right:
                 ...
          case Keys.Up:
                 ...
      }
  }

  private void myKeyUp(object sender, KeyEventArgs e)
  {
      ... pretty much the same as myKeyDown
  }
Run Code Online (Sandbox Code Playgroud)

这可能是一个非常基本的问题,但我对C#还不熟悉,而且我以前从未需要这样的输入.

更新: 许多人建议我使用System.Console.ReadKey(true).Key.这没有用.我需要知道按键被释放的时刻,同时支持多个按键.此外,ReadKey是一个阻塞调用 - 这意味着程序将停止并等待按下一个键.

更新: 似乎唯一可行的方法是使用Windows窗体.这很烦人,因为我无法在无头系统上使用它.要求表单GUI接收键盘输入是......愚蠢的.

但无论如何,对于子孙后代,这是我的解决方案.我在.sln中创建了一个新的Form项目:

    private void Form1_Load(object sender, EventArgs e)
    {
        try
        {
            this.KeyDown += new KeyEventHandler(Form1_KeyDown);
            this.KeyUp += new KeyEventHandler(Form1_KeyUp);
        }
        catch (Exception exc)
        {
            ...
        }
    }

    void Form1_KeyDown(object sender, KeyEventArgs e)
    { …
Run Code Online (Sandbox Code Playgroud)

c# user-input console-application

11
推荐指数
2
解决办法
3万
查看次数

标签 统计

c# ×1

console-application ×1

user-input ×1