我有一个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这似乎不可能 - 我错过了一些明显的东西
(当使用触控板按钮或外接蓝牙鼠标时会发生这种情况,所以希望这是一个编程错误而不是机器的问题。)
EDIT Damien当然是正确的,跟踪双击也一切都保持同步:
private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
{
clicks++;
textBox1.Text = clicks.ToString();
}
答案 0 :(得分:4)
因为有时你点击的速度足够快,所以你会触发双击。请考虑您链接到的文档页面中的序列:
以下是为双击鼠标按钮而引发的事件顺序:
- MouseDown事件。
- 点击活动。
- MouseClick事件。
- MouseUp事件。
- MouseDown事件。
- DoubleClick事件。 (这可能会有所不同,具体取决于相关控件是否将StandardDoubleClick样式位设置为true。有关如何设置ControlStyles位的详细信息,请参阅SetStyle方法。)
- MouseDoubleClick事件。
- MouseUp事件。
醇>
请注意,该序列中MouseDown
/ MouseUp
个事件的数量是MouseClick
个事件的两倍。