c#-为什么当我具有触摸事件处理程序时,鼠标事件处理程序不起作用?

我的某些最终用户有触摸屏,而其他一些则有PC.在触摸屏上,PreviewMouseUp / Down与触摸事件处理程序一起触发,从而导致重复行为(用PreviewMousUp / Down编写的函数执行两次).

所以我的示例Button XAML:

<Button x:Name="Whatever" Background="Transparent"  MouseUp="Whatever_MouseUp" MouseDown="Whatever_MouseDown" TouchUp="Whatever_TouchUp" TouchDown="Whatever_TouchDown">
    <StackPanel>
        <TextBlock x:Name="WhateverText" Text="Soemthing" FontSize="13"/>
        <Image x:Name="WhateverImage" Source="bla/bla/bla"/>
    </StackPanel>
</Button>

为什么在PC上没有触发MouseDown和MouseUp事件处理程序?

如果我在触摸屏上执行,它的工作原理就像一个超级按钮(Touch事件处理程序).但是,在我的PC(VS-2015)上根本不起作用.请和谢谢

最佳答案
似乎Click事件处理程序可防止触发MouseDown和MouseUp事件.我希望这是因为,当我从头开始构建自定义控件(如按钮)时,会使用这些事件来触发Click事件.
这只是我的期望.

无论如何,我尝试了一下,如果您未实现TouchDown / Up,则在触摸和非触摸上均会触发PreviewMouseDown / Up.但是,如果您使用它们实现了TouchDown / Up,则在TOUCH上的执行将如下所示:>触地得分> PreviewMouseDown>修改> PreviewMouseUp.在NON-TOUCH上执行将如下所示:> PreviewMouseDown> PreviewMouseUp.因此,我建议您使用PreviewMouseDown / Up,因为它适用于触摸和非触摸.

您也可以使用MouseRightButtonDown / Up与您一起使用.但是您会注意到,它之后会触发MouseDown / Up.您可以通过添加e.Handled = true来防止这种情况.在MouseRightButtonDown / Up处理程序中.

尝试利用这些提示,如果您无法解决,请告诉我,我会与您一起考虑的.祝好运.

转载注明原文:c#-为什么当我具有触摸事件处理程序时,鼠标事件处理程序不起作用? - 代码日志