0
我试图找到我应该用什么鼠标事件来点击一下Pushpin
。我尝试过使用MouseUp
事件,但即使只是单击并拖动,该事件也会触发。有没有办法让MouseUp
仅在点击时触发,而不是点击和拖动?还是有另一个鼠标事件,我应该看看?单点击放置图钉
说明:我正在使用Bing地图WPF控件,而不是AJAX或Silverlight。
我试图找到我应该用什么鼠标事件来点击一下Pushpin
。我尝试过使用MouseUp
事件,但即使只是单击并拖动,该事件也会触发。有没有办法让MouseUp
仅在点击时触发,而不是点击和拖动?还是有另一个鼠标事件,我应该看看?单点击放置图钉
说明:我正在使用Bing地图WPF控件,而不是AJAX或Silverlight。
我设法通过处理MouseLeftButtonDown
和MouseLeftButtonUp
事件来破解这一切。
private void map_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
clickTimer.Start();
}
private void map_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
clickTimer.Stop();
if (clickTimer.ElapsedMilliseconds < arbitraryConstant) // I find that 100 works well
{
Point mousePosition = e.GetPosition(this);
Location pinLocation = map.ViewportPointToLocation(mousePosition);
targetPin.Location = pinLocation;
map.Children.Add(targetPin);
}
clickTimer.Reset();
}
一个Stopwatch
对象记录多少时间点击向下和释放点击之间间隔。评估这个经过的时间并确定它是否是“点击”。
警告:记得拨打clickTimer.Reset()
或您的Stopwatch
对象将继续增量,只有你的第一次点击记录点击(如果你不单击并拖动第一)将触发if
块。
警告:请勿设置e.Handled=true
。这将防止点击拖动事件,并且您的地图无法正常移动。
有一个计时器,每次移动鼠标时都会运行。然后,当计时器结束时,接受MouseUp事件。 – 2012-07-19 13:04:35