我正在尝试找一下我应该用什么鼠标事件来点击Pushpin
。我尝试过使用MouseUp
事件但即使我点击并拖动也会触发该事件。有没有办法让MouseUp
仅针对点击而不是点击并拖动?或者是否有另一个我应该关注的鼠标事件?
澄清:我正在使用Bing Maps WPF控件,而不是AJAX或Silverlight。
答案 0 :(得分:0)
我设法通过处理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
。这将阻止点击拖动事件,您的地图将无法正常平移。