2017-02-27 70 views
0

我尝试在Mouseclicks上做一个简单的颜色更换器,请参阅下面的代码。C#鼠标点击的颜色更换器不起作用

MouseButtons _lastButtonUp = MouseButtons.None; 

    private void ColorChanger_MouseUp(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Left) 
     { 
      this.BackColor = Color.FromArgb(255, 0, 0); 
     } 
     if (e.Button == MouseButtons.Right) 
     { 
      this.BackColor = Color.FromArgb(0, 0, 255); 
     } 
     _lastButtonUp = e.Button; 
    } 

    private void ColorChanger_DoubleClick(object sender, EventArgs e) 
    { 
     switch (_lastButtonUp) 
     { 
      case System.Windows.Forms.MouseButtons.Left: 
       this.BackColor = Color.FromArgb(255, 255, 0); 
       break; 
      case System.Windows.Forms.MouseButtons.Right: 
       this.BackColor = Color.FromArgb(0, 255, 0); 
       break; 
     } 
    } 

然而,这仅适用于单一的点击

当我尝试没有单一的点击这样的:

MouseButtons _lastButtonUp = MouseButtons.None; 

    private void ColorChanger_MouseUp(object sender, MouseEventArgs e) 
    { 
     _lastButtonUp = e.Button; 
    } 

    private void ColorChanger_DoubleClick(object sender, EventArgs e) 
    { 
     switch (_lastButtonUp) 
     { 
      case System.Windows.Forms.MouseButtons.Left: 
       this.BackColor = Color.FromArgb(255, 255, 0); 
       break; 
      case System.Windows.Forms.MouseButtons.Right: 
       this.BackColor = Color.FromArgb(0, 255, 0); 
       break; 
     } 
    } 

的双击工作。

有谁知道我在做什么错?

感谢

回答

3

我不知道你想达到什么样的,但我相信这是因为MouseDoubleClick事件之前 MouseUp事件引发

仅供鼠标事件参考:https://msdn.microsoft.com/en-us/library/ms171542(v=vs.110).aspx#Anchor_2

+0

不可以,MouseUp事件先引发。 – Berkay

+0

@Berkay - 安德烈的文档与您的断言相矛盾。有什么要支持它? –

+0

@Berkay MouseUp上升**两倍**:在mousedoubleclick –