Windows 8マシンのリストボックスでマウス入力とタッチ入力の両方を処理しようとすると、予期しない動作が発生します(Windows 7で同じソフトウェアを実行するのとは異なるため)。
これは、イベントを処理している私の関数/メソッドです
Private Sub Drag_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.InputEventArgs) Handles lvItems.PreviewMouseDown, lvItems.PreviewTouchDown
マウス入力とタッチ入力の両方を処理するようにすると、(PreviewTouchDown
および)最初に発生するイベントにを設定したPreviewMouseDown
場合でも、両方のイベント(タッチイベントとマウスボタンイベント)を受け取ります。event.Handled = True
TouchEventArgs
PreviewTouchDownイベントの処理をイベントハンドラーから削除すると、PreviewMouseDownイベントを受け取りません。
私が必要としているのは、タッチ/クリックごとに1回だけメソッドが呼び出されることです。PreviewMouseDownはタッチスクリーンでのみ使用されているわけではないため、削除できません。タッチイベントとマウスイベントの両方を1回のタッチで渡すと、機能が損なわれます。
Windows 7では、handled = trueを設定してマウスイベントがキャンセルされたため、タッチイベントのみを受け取ります。