大佬教程收集整理的这篇文章主要介绍了Map MouseLeftButtonUp 并不总是触发,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 BingMaps 制作一个允许在地图上绘制形状的应用。在这段代码中,我需要监听 MouSELEftbuttonUp 和 MouSELEftbuttonDown 以了解用户何时开始和停止绘图。但出于某种奇怪的原因, MouSELEftbuttonUp 并不总是触发。在这个应用程序中,用户可以自由绘制或绘制形状,当我们自由绘制时,处理程序被调用,但当它是一个形状(例如矩形)时,它不会总是被调用。我已经搜索过了,针对此 question 提供的解决方案似乎对我不起作用。也尝试使用隧道事件,但也没有奏效。
这是我的 Map.xaml:
<Window x:Class="Satellite_Vessel_Tracker.MainWindow"
xmlns="http://scheR_151_11845@as.microsoft.com/winfx/2006/xaml/presentation"
xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF"
xmlns:x="http://scheR_151_11845@as.microsoft.com/winfx/2006/xaml"
xmlns:d="http://scheR_151_11845@as.microsoft.com/Expression/blend/2008"
xmlns:mc="http://scheR_151_11845@as.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Satellite_Vessel_Tracker"
mc:Ignorable="d"
title="Satellite Vessel Tracker" Height="550" WIDth="940" windowstartupLOCATIOn="CenterScreen" MinWIDth="940" MinHeight="550" MaxHeight="550" MaxWIDth="940">
<m:Map name="MainMap" CredentialsProvIDer="..." MouseMove="MainMap_MouseMove" MouSELEftbuttonDown="MainMap_MouSELEftbuttonDown" MouSELEftbuttonUp="MainMap_MouSELEftbuttonUp" margin="0,408.6,-0.4" Height="490"/>
</Window>
这是在地图上绘制线条的代码:
using System;
using System.windows;
using System.windows.input;
using System.windows.Media;
using Microsoft.Maps.MapControl.WPF;
namespace line
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private Readonly int strokeThickness = 2;
private UIElement last;
Point start,end;
private voID MainMap_MouSELEftbuttonDown(object sender,MousebuttonEventArgs E)
{
if (e.buttonState == MousebuttonState.pressed)
{
last = null;
start = e.Getposition(MainMap);
e.Handled = true;
}
}
private voID MainMap_MouSELEftbuttonUp(object sender,MousebuttonEventArgs E)
{
Console.Writeline("MousebuttonUp");
end = e.Getposition(MainMap);
UIElement shape = Drawline();
MainMap.Children.Add(shapE);
last = null;
e.Handled = true;
}
private voID MainMap_MouseMove(object sender,MouseEventArgs E)
{
if (e.leftbutton == MousebuttonState.pressed)
{
MainMap.Children.Remove(last);
end = e.Getposition(MainMap);
last = Drawline();
MainMap.Children.Add(last);
e.Handled = true;
}
}
private UIElement Drawline()
{
Mappolyline line = new Mappolyline()
{
LOCATIOns = new LOCATIOnCollection()
{
MainMap.VIEwportPointToLOCATIOn(start),MainMap.VIEwportPointToLOCATIOn(end)
},stroke = Brushes.black,strokeThickness = strokeThickness
};
return line;
}
}
}
更新:
如其中一条评论所述,我尝试使用带有 AddHandler
标志的 handledEventsToo
方法,尽管它仍然不会一直被触发。
PrevIEwMouSELEftbuttonUp
也不会每次都被解雇。
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的Map MouseLeftButtonUp 并不总是触发全部内容,希望文章能够帮你解决Map MouseLeftButtonUp 并不总是触发所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。