2012-02-26 120 views
12

我想在Visual C#中製作一個掃雷遊戲類型的遊戲,並且當我右鍵單擊並左鍵單擊一個按鈕時,我想要發生不同的事情,我該怎麼做?Visual C#窗體右鍵單擊按鈕

我曾嘗試這個代碼,但它只是記錄左側點擊:

private void button1_MouseClick(object sender, MouseEventArgs e) 
    { 
     if (e.Button == System.Windows.Forms.MouseButtons.Left) 
     { 
      MessageBox.Show("Left"); 
     } 
     if (e.Button == System.Windows.Forms.MouseButtons.Right) 
     { 
      MessageBox.Show("Right"); 
     } 

    } 
+0

你已經有了正確的答案,所以不需要重寫那個。我在幾個星期前寫我自己的掃雷艇和要求的[SO問題](http://stackoverflow.com/questions/8485779/capture-simultaneous-right-and-left-click-event-triggers-on-label),其可能會幫助你。這是如何創建「在數字上同時點擊兩個鼠標按鈕以揭示圍繞它的所有被覆蓋的框」功能。如果你已經知道如何做到這一點,就不理我了:) – 2012-02-26 03:57:59

+0

酷,這可能會派上用場 – SpencerJL 2012-02-26 04:33:43

回答

8

你將不得不使用MouseUpMouseDown事件而不是Click事件捕捉右鍵。

+0

同時檢查'eventArgs.button == MouseButtons.Right' – 2013-05-30 23:31:47

1

只需嘗試button1_MouseDown事件而不是button1_MouseClick Event.It將解決您的問題。

private void button1_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Left) 
     { 
      //do something 
     } 
     if (e.Button == MouseButtons.Right) 
     { 
      //do something 
     } 
    } 
0

按鈕是MouseButtons.Left不是MouseButton.Right,甚至不是中間只反應。

void Select(object sender, MouseEventArgs e) 
{ 
    /* var btn = sender as CardButton;*/ 

    if (e.Button == MouseButtons.Left) 
    { 
     if (this.Selected == false) 
     { 
      this.Selected = true; 
     } 
     else 
     { 
      this.Selected = false; 
     } 
    } 
    if (e.Button == MouseButtons.Right) 
    { 
     if (this.Selected == false) 
     { 
      this.Selected = true; 
     } 
     else 
     { 
      this.Selected = false; 
     } 
    } 

    Draw(); 
}