怎么在Border中的MouseLeftButtonDown事件里判断鼠标是双击还是单击(WPF)。 双击的时候不能引发单击事件
判断时间也行,给份代码看看。这个事件要执行单击事件,和双击事件的内容,所有,在执行双击事件的时候不能先执行单击事件了。...
判断时间也行,给份代码看看。
这个事件要执行单击事件,和双击事件的内容,所有,在执行双击事件的时候不能先执行单击事件了。 展开
这个事件要执行单击事件,和双击事件的内容,所有,在执行双击事件的时候不能先执行单击事件了。 展开
3个回答
展开全部
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("双击");
}
展开全部
下面是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;
}
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
展开全部
无法判断,这个只是在鼠标按下时触发。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询