C#创建一个触发函数的热键

C#创建一个触发函数的热键,c#,winforms,visual-studio,user-interface,event-handling,C#,Winforms,Visual Studio,User Interface,Event Handling,我目前正在处理一个项目,希望在我的窗口中添加一个KeyEventHandler,一个按键触发函数的窗口 然而,我的问题是,当我想添加这样的处理程序时 testObject.KeyDown+=新的KeyEventHandler(doSomethingOnKeyPress) 我得到一个错误,程序无法将Forms.KeyEventHandler转换为Input.KeyEventHandler 有谁能在这个问题上为我指明正确的方向吗?我认为您使用了错误的名称空间,并试图进行更改 private void

我目前正在处理一个项目,希望在我的窗口中添加一个
KeyEventHandler
,一个按键触发函数的窗口

然而,我的问题是,当我想添加这样的处理程序时

testObject.KeyDown+=新的KeyEventHandler(doSomethingOnKeyPress)

我得到一个错误,程序无法将
Forms.KeyEventHandler
转换为
Input.KeyEventHandler


有谁能在这个问题上为我指明正确的方向吗?

我认为您使用了错误的名称空间,并试图进行更改

private void doSomethingOnKeyPress(object sender, KeyEventArgs e))


或者在使用部分组织起来,更改名称空间应该是可行的,但我想应该是相反的,即

private void doSomethingOnKeyPress(object sender, System.Windows.Input.KeyEventArgs e)
{
  if (e.Control && e.KeyCode == Keys.R)
  { 
   // do something
  }
}

你不小心混淆了按键和向下键的事件

KeyPress和KeyDown是两个不同的事件,因此具有不同的事件处理程序

按键应为: testObject.KeyDown+=新的KeyEventHandler(doSomethingKeyPress)


您可以使用它“W”,例如,您可以使用D A或您想要的

您的testObject是什么类型的?显然,如果
doSomethingOnKeyPress
匹配事件处理程序签名,则不需要使用构造函数
+=newkeyeventHandler(doSomethingOnKeyPress)
testObject.KeyDown+=doSomethingOnKeyPress
可以工作。我用于它的测试对象是一个文本框
private void doSomethingOnKeyPress(object sender, Forms.KeyEventHandler e))
private void doSomethingOnKeyPress(object sender, System.Windows.Input.KeyEventArgs e)
{
  if (e.Control && e.KeyCode == Keys.R)
  { 
   // do something
  }
}
private void myClass(){
//doing something
}
private void button1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.W){
myClass();
}
}