QA@IT

(C#)ListBox長押しで、右クリックにならない。

7357 PV

.NET + C# でアプリの開発をしているのですが、ListBoxのMouseDownイベントで右クリックを検知し、処理を行おうと思っています。

デスクトップで開発していた際には上手く動いたと思っていたのですが、タブレット端末で動作させると上手く動作しません。
通常、Windows8.1のタブレットではロングタップが右クリックの扱いになっているかと思うのですが、それが反応しない状態です。

同じアプリの他のコントロールやフォームなどでは、ロングタップで正常に右クリックとして判定され、マウスで扱っているのと同じように動きますが、何故かListBoxコントロールだけはロングタップが反応しないのです。

タブレットにも VisualStudio をインストールし確認しましたがイベント自体も呼ばれていませんでした。
どなたか解決策を御存知の方がいましたら後教授願います。

使用しているタブレット端末は富士通のQH55/M(Windows8.1)になります。
開発環境は VisualStudio Express 2013 for Windows Desktop Version 12.0.30110.00 Update1 になります。

ちなみにQH55/Mにはワコム製のデジタイザが内蔵されていますが、そちらのロングタップも反応しない状態です。
ペン横についているサイドボタンを押しながらタップしても右クリック扱いになるのですが、そちらは右クリックとして認識します。

よろしくお願いします。

回答

WinFormsの話でいいでしょうか。

大分前に調べただけなので恐縮ですが、Mousedownとはウィンドウメッセージレベルで違うので、
WPFコントロールを仕込んでtouchdownイベントを使うか、
WM_TOUCHを自前で拾うかだったような気がします。

こちらのサンプルは参考になるかもしれません。

http://archive.msdn.microsoft.com/win7touchsamples/Release/ProjectReleases.aspx?ReleaseId=4791

編集 履歴 (1)
  • 回答ありがとうございます。
    タブレット対応をがっつりするつもりはなく、マウスで可能な操作ならばタッチでも全て行えると思っていたので、こういうことがあるとは盲点でした。
    とりあえず、UIの設計をやり直してタッチでも操作できるようにしたいと思います。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。