【问题标题】:How to assign an event to a button press [duplicate]如何将事件分配给按钮按下[重复]
【发布时间】:2014-03-02 04:22:23
【问题描述】:

所以,我一直在开发一个在控制台应用程序中制作的游戏,我想做的是 - 当我按下一个按钮(例如:Escape)时,一些代码会执行并且它会执行它被告知要做的事情。

我在互联网上搜索过,唯一找到的是这个,它不起作用,我不知道为什么:

void WindowCloseOnEsc_KeyDown(object sender, KeyEventArgs e)  // does not know what
{                                                          // is this "KeyEventargs"
    if (e.KeyCode == Keys.Escape)
    {
        Environment.Exit(0);
    }
}

【问题讨论】:

  • 这是一个 WinForms 事件。你不能在控制台上使用它。
  • 这是你的工作吗??

标签: c# events button


【解决方案1】:

你可以使用

Console.ReadKey Method 监听应用程序用户按下的键。

class Example 
{
   public static void Main() 
   {
      ConsoleKeyInfo cki;
      // Prevent example from ending if CTL+C is pressed.
      Console.TreatControlCAsInput = true;

      Console.WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key.");
      Console.WriteLine("Press the Escape (Esc) key to quit: \n");
      do 
      {
         cki = Console.ReadKey();
         Console.Write(" --- You pressed ");
         if((cki.Modifiers & ConsoleModifiers.Alt) != 0) Console.Write("ALT+");
         if((cki.Modifiers & ConsoleModifiers.Shift) != 0) Console.Write("SHIFT+");
         if((cki.Modifiers & ConsoleModifiers.Control) != 0) Console.Write("CTL+");
         Console.WriteLine(cki.Key.ToString());
       } while (cki.Key != ConsoleKey.Escape);
    }
}

【讨论】:

    【解决方案2】:

    在控制台应用程序中,您应该使用 Console.Read*() 沿袭的输入法。

    上面的代码可以绑定到一个windows窗体应用程序,它有一个消息泵,通常工作方式不同(是面向事件的,而不是面向行的)。

    这回答了一个非常相似的问题:https://stackoverflow.com/a/5891612/3227403

    【讨论】:

      猜你喜欢
      • 2014-03-29
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      相关资源
      最近更新 更多