zoukankan      html  css  js  c++  java
  • silverlight双击事件处理

    首先添加双击处理帮助类:

        public static class DoubleClickHelper
        {
            private const long k_DoubleClickSpeed = 300;
            private const double k_MaxMoveDistance = 10;
            private static long m_LastClickTicks = 0;
            private static Point m_LastPosition;
            private static object m_LastSender;
            /// <summary>
            /// 鼠标双击事件处理。
            /// </summary>
            /// <param name="sender">类型对象</param>
            /// <param name="e">事件数据</param>
            /// <returns>bool</returns>
            public static bool IsDoubleClick(object sender, MouseButtonEventArgs e)
            {
                bool senderMatch = sender.Equals(m_LastSender);
                m_LastSender = sender;
                long clickTicks = DateTime.Now.Ticks;
                Point position = e.GetPosition(null);
                if (senderMatch)
                {
                    long elapsedTicks = clickTicks - m_LastClickTicks;
                    long elapsedTime = elapsedTicks / TimeSpan.TicksPerMillisecond;
                    double distance = position.Distance(m_LastPosition);
                    if (elapsedTime <= k_DoubleClickSpeed && distance <= k_MaxMoveDistance)
                    {
                        // Double click!
                        m_LastClickTicks = 0;
                        return true;
                    }
                }
                // Not a double click
                m_LastClickTicks = clickTicks;
                m_LastPosition = position;
                return false;
            }
            // 获取间距
            private static double Distance(this Point pointA, Point pointB)
            {
                double x = pointA.X - pointB.X;
                double y = pointA.Y - pointB.Y;
                return Math.Sqrt(x * x + y * y);
            }
        }

    页面代码:

    <sdk:DataGrid MouseLeftButtonUp="dg_MouseLeftButtonUp" ></sdk:DataGrid> 

    后台代码这样写:

            private void dg_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
                if (dg.SelectedItem != null)
                {
                    if (DoubleClickHelper.IsDoubleClick(sender, e))
                    {
                        //双击事件处理。。。           
                    }
            } 
  • 相关阅读:
    音频、摄像机操作
    调用系统相机及摄像机
    图片的放大缩小
    haxm intelx86加速模拟器的安装
    mac eclipse 下安装subclipse
    文件多线程下载实现
    windows与linux之间传输文件
    ZeroMQ接口函数之 :zmq_setsockopt –设置ZMQ socket的属性
    使用C语言在windows下一口气打开一批网页
    Net-SNMP是线程安全的吗
  • 原文地址:https://www.cnblogs.com/haoqi/p/3383983.html
Copyright © 2011-2022 走看看