2012-02-26 94 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(); 
}