2013-02-20 127 views
0

我想是这样的使用箭头键的

按下箭头键下,例如,button1做一个点击

ArrowKeyDown = button1.Click的行动,并通过这样做,点击我的图片的运动全部通过我的picturebox。而且上升的时间相同,rightleft

+2

这是一个Windows窗体应用程序或Web应用程序实现这一目标? – 2013-02-20 02:15:13

+0

你能说得更具描述性吗? – 2013-02-20 02:15:18

+0

@JohnSaunders - 看起来像WinForm! – 2013-02-20 02:15:41

回答

0

您正在尝试使用Form.KeyPreview,但在使用此功能之前,您必须设置t表单KeyPreview = true他财产和你提到的Button Click您可以通过使用.PerformClick Method

private void Form1_Load(object sender, EventArgs e) 
    { 
     this.KeyPreview = true; 
     this.KeyDown += new KeyEventHandler(Form1_KeyDown); 
     button1.Click += new EventHandler(button1_Click); 
    } 

    private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     switch (e.KeyCode) 
     { 
      case Keys.Left: 
       button1.PerformClick(); 
       break; 
      case Keys.Right: 
       button1.PerformClick(); 
       break; 
      case Keys.Down: 
       button1.PerformClick(); 
       break; 
      case Keys.Up: 
       button1.PerformClick(); 
       break; 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show("Okay"); 
    } 
+0

我试过,但我不知道为什么当我按下键没有发生。 对不起,1月份才开始使用这个程序。我的程序已经做了它必须做的,但我想添加更多的东西。而不是使用按钮使用键盘。 – Rodrigo 2013-02-20 03:48:28

+0

你真的写了'buttonClick'的事件吗? – spajce 2013-02-20 03:49:40

+0

我做到了。我认为我的代码是错误的,我改变了一些简单的指令,但我得到了相同的结果。什么都没发生。 – Rodrigo 2013-02-20 03:52:32

1

把你所有的代码button1.Click放到一个单独的函数中。

然后你可以从你的button1.Click和你的关键事件调用函数。

在按键内部,您必须使用if语句和e.KeyCode来确保在调用子程序之前您有正确的键。

如果你的代码看起来像这样

private void button1_Click(object sender, EventArgs e) 
{ 
    //do something here 
} 

现在会更喜欢的键按下事件此

private void doSomething() 
{ 
    //do something here 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    doSomething(); 
} 

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Down) 
    { 
     doSomething(); 
    } 
    else if(e.keyCode==Keys.Right) 
    { 
     doSomethingElse(); 
    } 
    //etc.etc 
} 

另一种更清洁的方法是使用switch语句

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    switch (e.KeyCode) 
    { 
     case Keys.Down: 
      doSomething(); 
      break; 
     case Keys.Right: 
      //do Something Else 
      break; 
     case Keys.Up: 
      //do Something Else 
      break; 
     case Keys.Left: 
      //do Something Else 
      break; 
     default: 
      //they hit a key you did not handle 
      break; 
    } 

} 
+0

我如何发送我所做的?在你做的格式 – Rodrigo 2013-02-20 03:04:35

+0

我真的不明白你的问题,你可以尝试澄清? – Bmoore 2013-02-20 03:14:22