C# 鼠标下降/鼠标悬停并单击事件不同步

C# 鼠标下降/鼠标悬停并单击事件不同步,c#,winforms,windows-8.1,C#,Winforms,Windows 8.1,我有一个winforms应用程序,可以捕捉鼠标向下、鼠标点击和点击事件 缓慢单击表单(大约每秒一次),事件计数器保持同步 快速单击,向下/向上事件计数保持跟踪,但单击事件计数落后: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e)

我有一个winforms应用程序,可以捕捉鼠标向下、鼠标点击和点击事件

缓慢单击表单(大约每秒一次),事件计数器保持同步

快速单击,向下/向上事件计数保持跟踪,但单击事件计数落后:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }
    private int clicks = 0;
    private void Form1_MouseClick(object sender, MouseEventArgs e)
    {
        clicks++;
        textBox1.Text = clicks.ToString();
    }

    private int mdown=0;
    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        mdown++;
        textBox2.Text = mdown.ToString();
    }
    private int mup = 0;
    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        mup++;
        textBox3.Text = mup.ToString();
    }
}

阅读文档:这似乎不可能——我是否遗漏了一些明显的东西

(使用触摸板按钮或外部蓝牙鼠标时会发生这种情况,因此希望这是编程错误,而不是机器的问题。)

编辑 Damien当然是正确的,他还跟踪双击,并且所有内容都保持同步:

    private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        clicks++;
        textBox1.Text = clicks.ToString();
    }

因为有时候你点击的速度足够快,以至于你触发了双击。考虑链接到的文档页面的序列:

以下是双击鼠标按钮引发的事件顺序:

  • 鼠标下移事件
  • 单击事件
  • 鼠标点击事件
  • 鼠标移动事件
  • 鼠标下移事件
  • 双击事件。(这可能会有所不同,具体取决于相关控件是否将StandardDoubleClick样式位设置为true。有关如何设置ControlStyles位的更多信息,请参阅SetStyle方法。)
  • 鼠标双击事件
  • 鼠标移动事件

  • 请注意,该序列中的
    MouseDown
    /
    MouseUp
    事件的数量是
    MouseClick
    事件的两倍。

    您有什么理由同时使用这三个事件?MouseUp是处理点击事件的常用方式。感谢@CodyGray的响应-上面的程序只是突出了问题-我只是捕捉到点击事件并注意到它们并不总是在哪里注册,所以我创建了上面的示例。当然,我可以转移到跟踪鼠标,但我想知道为什么我会得到上述结果。