2013-02-20 172 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