【发布时间】:2016-03-02 23:50:38
【问题描述】:
我有一个 winforms 应用程序,它可以捕获 MouseDown、MouseUp 和 Click 事件。
缓慢单击表单(大约每秒一次),事件计数器保持同步。
快速点击,向下/向上事件计数保持跟踪,但点击事件计数落后:
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();
}
}
阅读文档:https://msdn.microsoft.com/en-us/library/ms171542.aspx 这似乎不可能 - 我错过了一些明显的东西
(在使用触控板按钮或外接蓝牙鼠标时会发生这种情况,因此希望这是一个编程错误,而不是机器问题。)
编辑 Damien 当然是正确的,它也跟踪双击并且一切都保持同步:
private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
{
clicks++;
textBox1.Text = clicks.ToString();
}
【问题讨论】:
-
您有什么理由同时使用所有三个这些事件? MouseUp 是处理点击事件的惯用方式。
-
感谢回复@CodyGray - 上面的程序只是突出了这个问题 - 我只是捕捉点击事件并注意到它们并不总是注册,所以我创建了上面的例子。当然我可以继续跟踪 MouseUp,但我想弄清楚为什么我得到了上述结果。
标签: c# winforms windows-8.1