3

一部のカスタムコントロールでPreviewMouseUp、PreviewMouseMove、およびPreviewMouseDownイベントをオーバーライドして、クリックしてドラッグすることでスクロールビューアーをスクロールできるようにするC#アプリを開発しました。このカスタムコードは、マウスを使用してドラッグアンドスクロールする場合は非タッチスクリーンでうまく機能しますが、実際のタッチスクリーンモニターで使用すると、モニターにタッチしてドラッグしたときにPreviewMouseUpが起動しないため、機能しません。指。

最小限の変更で既存のコードを使用できるようにしたいと思います。これにより、ラップトップでのデバッグ中にマウスを使用してクリック/ドラッグしたり、タッチスクリーンを使用してタッチ/ドラッグしたりできるようになります。

代わりに、すべてのタッチ(PreviewTouchUp、PreviewTouchDown、およびPreviewTouchMove)をマウスイベントとして処理するようにWindows 7コンピューターを構成する方法はありますか?

更新:私は言及するのを忘れました。Touchイベントが処理されない場合、.NETは後でMouseイベントを自動的に発生させると思いました。私が書いたコードのどれも現在タッチイベントを処理していなくても、これは起こっていないようです。なぜこれが起こっているのか考えはありますか?

ありがとう、ブライアン

4

1 に答える 1

4

あなたができることは、両方に同じ方法を使用することです、次のようなものです:

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);
于 2012-06-28T13:26:37.477 に答える