我有一个用户控件,我想在单击和双击的情况下做一些不同的事情。我正在处理mouseLeftButtonDown事件:
private void cueCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
switch (e.ClickCount)
{
case 1:
{
cueCanvas.Focus();
e.Handled = true;
_mouseStartPoint = Mouse.GetPosition(null);
break;
}
case 2:
{
double pos = Mouse.GetPosition(cueCanvas).X;
TimeSpan time = ConvertFromPosition(pos);
AddNewEvent(time);
e.Handled = true;
break;
}
}
}
问题是,WPF并不关心你点击鼠标的次数,所以我得到了第一次点击事件,即使我要获得第二次点击事件(如果是双击) 。有没有人想出办法解决这个问题?我意识到我可以尝试变得聪明并设置一些定时器,以便在第二次进入的情况下第一次点击被“取消”(我意识到这是框架将要做的事情)。如果这是唯一的答案,是否有人知道我们如何查询系统以获得适当的点击延迟?
答案 0 :(得分:0)
据我所知,真的没办法做到这一点。问题在于你在与现实作斗争。 :-)实际上,双击有2次点击。如果快速双击,您希望忽略单击。
您将等待一段短暂的间隔,看看是否接着是第二次点击。您可以使用WinForms中的SystemInformation类查询该时间间隔,也可以直接调用Win32 API。