コード例 #1
0
    public static bool IsDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        System.Windows.Point position = e.GetPosition(null);
        long clickTicks   = DateTime.Now.Ticks;
        long elapsedTicks = clickTicks - _LastClickTicks;
        long elapsedTime  = elapsedTicks / TimeSpan.TicksPerMillisecond;
        bool quickClick   = (elapsedTime <= k_DoubleClickSpeed);
        bool senderMatch  = (_LastSender != null && sender.Equals(_LastSender.Target));

        if (senderMatch && quickClick && position.Distance(_LastPosition) <= k_MaxMoveDistance)
        {
            // Double click!
            _LastClickTicks = 0;
            _LastSender     = null;
            return(true);
        }
        // Not a double click
        _LastClickTicks = clickTicks;
        _LastPosition   = position;
        if (!quickClick)
        {
            _LastSender = new WeakReference(sender);
        }
        return(false);
    }