如何让触摸屏在 C# 应用中使用鼠标事件而不是触摸事件



我开发了一个 C# 应用程序,该应用程序覆盖某些自定义控件中的 PreviewMouseUp、PreviewMouseMove 和 PreviewMouseDown 事件,以允许通过单击和拖动来滚动滚动查看器。 当鼠标用于拖动和滚动时,此自定义代码在非触摸屏上效果很好,但是当我在真正的触摸屏显示器上使用它时,它无法正常工作,因为当触摸和拖动显示器时,PreviewMouseUp 不会被触发用手指。

我希望能够以最少的更改使用我现有的代码。 这将允许我在笔记本电脑上调试时使用鼠标单击/拖动,并使用触摸屏触摸/拖动。

是否有任何方法可以将Windows 7计算机配置为将所有触摸(PreviewTouchUp,PreviewTouchDown和PreviewTouchMove)视为鼠标事件?

更新:我忘了提。 我认为如果不处理触摸事件,则 .NET 之后会自动引发鼠标事件。 即使我编写的代码当前都没有处理触摸事件,这似乎也没有发生。 知道为什么会发生这种情况吗?

谢谢布莱恩

您可以做的是对两者使用相同的方法,如下所示:

protected override void OnPreviewMouseUp(MouseButtonEventArgs e)
{
    OnPreviewTouchMouseUp(e);
}
protected override void OnPreviewTouchUp(TouchEventArgs e)
{
    OnPreviewTouchMouseUp(e);
}
private void OnPreviewTouchMouseUp(EventArgs e)
{
}

唯一的区别是获取鼠标/触摸坐标的方式:

对于触摸:

e.GetTouchPoint(this).Position;

对于鼠标:

e.GetPosition(this);

最新更新