忽略WPF中的单击

时间:2010-11-11 19:18:23

标签: c# wpf user-controls mouse click

我有一个用户控件,我想在单击和双击的情况下做一些不同的事情。我正在处理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并不关心你点击鼠标的次数,所以我得到了第一次点击事件,即使我要获得第二次点击事件(如果是双击) 。有没有人想出办法解决这个问题?我意识到我可以尝试变得聪明并设置一些定时器,以便在第二次进入的情况下第一次点击被“取消”(我意识到这是框架将要做的事情)。如果这是唯一的答案,是否有人知道我们如何查询系统以获得适当的点击延迟?

1 个答案:

答案 0 :(得分:0)

据我所知,真的没办法做到这一点。问题在于你在与现实作斗争。 :-)实际上,双击有2次点击。如果快速双击,您希望忽略单击。

您将等待一段短暂的间隔,看看是否接着是第二次点击。您可以使用WinForms中的SystemInformation类查询该时间间隔,也可以直接调用Win32 API