c# – 如何组合触摸和鼠标事件处理程序而不会产生重复行为?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何组合触摸和鼠标事件处理程序而不会产生重复行为?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2055字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何组合触摸和鼠标事件处理程序而不会产生重复行为?](/upload/InfoBanner/zyjiaocheng/805/995f7538cc1d4aa09ccd9caf49465fc9.jpg)
我正在研究正在触摸屏平板电脑上使用的WPF应用程序.我使用VS2015 IDE进行开发,并使用鼠标进行调试.
我必须处理按钮的向下和向上事件来执行某些任务.我使用PreviewMouse和PreviewTouch事件处理程序,我在每种情况下都遇到问题:
>案例1:使用PreviewMouseDown,PreviewMouseUp,PreviewTouchDown和PreviewTouchUp.对于每个按钮,我需要复制我的代码以包含单独的触摸和鼠标事件处理程序,但功能完全相同.我这样做是为了能够使用应用程序(鼠标)和用户使用它(触摸).问题:触摸事件处理程序执行鼠标事件处理程序;导致应用程序复制行为.例如:将x递增1的按钮,如果“单击”它将递增1,如果“触摸”它则递增2.
>案例2:使用Click,PreviewMouseUp和PreviewTouchUp.问题:在鼠标单击时不会调用PreviewTouchUp和PreviewMouseUp.
>案例3:为每个按钮创建一个方法,并从触摸和鼠标事件(如How to get Touchscreen to use Mouse Events)调用它.问题:重复行为(方法被调用两次)
>案例4:删除所有Touch事件,因为PreviewMouseDown和PreviewMouseUp正在任何Touch上执行.行为有效但我需要触摸按钮上的某些位置才能执行. (透明度?我必须触及一个位置 – 就像鼠标一样?)
>案例5:使用MouseUp和MouseDown而不是预览.完全无法触摸Touch,触摸按钮上的任何位置.
我想要类似于这个Prevent a WPF application to interpret touch events as mouse events的东西,但只能在平板电脑上.我仍然需要在我的环境中使用鼠标.我该如何解决这个问题?
按钮示例XAML:
<Button x:Name="locationScrollUpButton" Margin="0,5,5,0" Background="Transparent" Padding="0" Grid.Row="1" Grid.Column="1" PreviewMouseUp="locationScrollUpButton_PreviewMouseUp" PreviewMouseDown="locationScrollUpButton_PreviewMouseDown" BorderThickness="0" PreviewTouchDown="locationScrollUpButton_PreviewTouchDown" PreviewTouchUp="locationScrollUpButton_PreviewTouchUp" >
<StackPanel>
<TextBlock x:Name="locationUpButtonText" Text="Up" FontSize="13" Margin="0,2,0,4" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Image x:Name="locationUpButtonImage" Source="/ProjectName;component/Resources/CaptureView/Location-Scroll-Up-White.png" Width="55" Height="60"/>
</StackPanel>
</Button>
解决方法:
检查MouseEventArgs的StylusDevice属性.如果为null,则鼠标事件不是提升的触摸事件.如果它不为null,那么StylusDevice将成为启动触摸的触摸设备.
内容总结
以上是互联网集市为您收集整理的c# – 如何组合触摸和鼠标事件处理程序而不会产生重复行为?全部内容,希望文章能够帮你解决c# – 如何组合触摸和鼠标事件处理程序而不会产生重复行为?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。