程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Map MouseLeftButtonUp 并不总是触发大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Map MouSELEftButtonUp 并不总是触发?

开发过程中遇到Map MouSELEftButtonUp 并不总是触发的问题如何解决?下面主要结合日常开发的经验,给出你关于Map MouSELEftButtonUp 并不总是触发的解决方法建议,希望对你解决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 方法,尽管它仍然不会一直被触发。

  • 即使鼠标在地图边界内,也会发生这种情况,如使用 @H_644_7@mouSELEave 测试。

  • PrevIEwMouSELEftbuttonUp 也不会每次都被解雇。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的Map MouseLeftButtonUp 并不总是触发全部内容,希望文章能够帮你解决Map MouseLeftButtonUp 并不总是触发所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。