怎么在Border中的MouseLeftButtonDown事件里判断鼠标是双击还是单击(WPF)。 双击的时候不能引发单击事件

判断时间也行,给份代码看看。这个事件要执行单击事件,和双击事件的内容,所有,在执行双击事件的时候不能先执行单击事件了。... 判断时间也行,给份代码看看。
这个事件要执行单击事件,和双击事件的内容,所有,在执行双击事件的时候不能先执行单击事件了。
展开
 我来答
超大蒲公英
推荐于2016-04-27 · TA获得超过741个赞
知道小有建树答主
回答量:758
采纳率:75%
帮助的人:742万
展开全部
        private void Border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            var element = (FrameworkElement)sender;
            if (e.ClickCount == 1)
            {
                var timer = new System.Timers.Timer(500);
                timer.AutoReset = false;
                timer.Elapsed += new ElapsedEventHandler((o, ex) => element.Dispatcher.Invoke(new Action(() =>
                {
                    var timer2 = (System.Timers.Timer)element.Tag;
                    timer2.Stop();
                    timer2.Dispose();
                    UIElement_Click(element, e);
                })));
                timer.Start();
                element.Tag = timer;
            }
            if (e.ClickCount > 1)
            {
                var timer = element.Tag as System.Timers.Timer;
                if (timer != null)
                {
                    timer.Stop();
                    timer.Dispose();
                    UIElement_DoubleClick(sender, e);
                }
            }
 
        }
 
        private void UIElement_Click(object sender, MouseButtonEventArgs e)
        {
            MessageBox.Show("单击");
        }
 
        private void UIElement_DoubleClick(object sender, MouseButtonEventArgs e)
        {
            MessageBox.Show("双击");
        }
azjcdy
2015-01-19 · TA获得超过496个赞
知道小有建树答主
回答量:602
采纳率:0%
帮助的人:341万
展开全部
下面是datagrid的双击,你修改测试一下看是否适用
private bool m_bFirstTime = true; //是否是第一次点击
void Row_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
m_bFirstTime = !m_bFirstTime;
TimeSpan t = DateTime.Now.TimeOfDay;//点击时间
if (this.dgvData.Tag != null)
{
TimeSpan oldT = (TimeSpan)this.dgvData.Tag;
//判断两次点击的时间间隔,确定属于双机还是两次单击
if ((t != oldT && (t - oldT) < TimeSpan.FromMilliseconds(300)) && !m_bFirstTime)
{
//双击

}
}
this.dgvData.Tag = t;
}
更多追问追答
追问
TimeSpan.FromMilliseconds(300)) 
这是什么意思?自己控制双击间隔么?
追答
表示两次点击的时间间隔小于 300milliseconds 判断为双击事件, 间隔可调
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-01-19
展开全部
无法判断,这个只是在鼠标按下时触发。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式