我一直在将我制作的控制台迷宫游戏转换为Winform,并且在尝试接受用户输入时遇到错误。当我使用控制台游戏时,我使用了
Console.Read();
ConsoleKeyInfo press = Console.ReadKey(true);
press.Key == ConsoleKey.DownArrow;
然而,因为它现在是一个winform应用程序,而不是一个控制台应用程序,我无法以这种方式获得输入,所以我没有这样做,而是试图通过创建表单实例来获取输入,然后实例keyeventhandler,就像这样
public static gameBorder FormInstance;
public event KeyEventHandler KeyDown;
并在比较语句中的另一个类中调用它,如下所示:
if(gameBorder.FormInstance.KeyPress += Keys.W )
然而这引发了错误:
无法将system.windows.forms.keys类型隐式转换为system.windows.form.keypresseventhandler
我在想这是因为我试图将一个关键事件处理程序的实例与一个被按下的键进行比较,但我不确定。任何指导都将非常感谢。
答案 0 :(得分:1)
此:
gameBorder.FormInstance.KeyPress +=
您是如何订阅事件处理程序的。 Keys.W
不是事件处理程序。
当您键入+=
时,Visual Studio会为您提供一个新的事件处理程序。继续,让它这样做,然后你可以测试在它生成的函数内按下了什么键(使用KeyPressEventArgs
)。
分配事件处理程序:
gameBorder.FormInstance.KeyPress += HandleKeyPress;
处理事件:
private void HandleKeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 'W')
{
}
}