none
ペンタブでMouseDown RRS feed

  • 質問

  • ごく単純にボーダーを二つ用意しマウスダウンイベントを用意します

     private void Border_MouseDown(object sender, MouseButtonEventArgs e)

    {

    Border b = sender as Border;

    }

    上記のようにSenderを取得しカラーダイアログを出現させているのですが、

    ペンタブを利用した場合に限り、ダイアログが出た後に別のBorderをクリックしているにも関わらず以前のBorderをクリックしたことになってしまいます。

    イベントの終わりにMouse.Capture(null);などを入れてみたのですが解決できませんでした。

    マウスでは通常の動作をします。

    心当たりのある方、助言をいただけるとうれしいです。宜しくお願いします。

    2012年3月3日 7:47

回答

  • とりあえず手持ちのペンタブレットで現象が再現できました。

    とはいえ、MouseDownイベントからモーダルのウィンドウを開くのは昔からよくないやり方なので、やめたほうがいいです。(MouseUpイベントが消えることがよくあるので)
    やるならMouseUp後にしたほうがいいです。

    Clickイベントでやれればベストでしょうが、Clickイベントがないですよね。
    MouseDownとMouseUpで擬似的にClickの動作を判定してやるか、BorderをButtonと組み合わせてButtonのClickをつかうか、ペンタブ限定でよければStylusSystemGestureイベントでSystemGesture.Tapを使うかでしょうね。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 山本春海 2012年3月12日 8:50
    2012年3月5日 12:58

すべての返信

  • とりあえず手持ちのペンタブレットで現象が再現できました。

    とはいえ、MouseDownイベントからモーダルのウィンドウを開くのは昔からよくないやり方なので、やめたほうがいいです。(MouseUpイベントが消えることがよくあるので)
    やるならMouseUp後にしたほうがいいです。

    Clickイベントでやれればベストでしょうが、Clickイベントがないですよね。
    MouseDownとMouseUpで擬似的にClickの動作を判定してやるか、BorderをButtonと組み合わせてButtonのClickをつかうか、ペンタブ限定でよければStylusSystemGestureイベントでSystemGesture.Tapを使うかでしょうね。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 山本春海 2012年3月12日 8:50
    2012年3月5日 12:58
  • ありがとうございます。

    おかげで今後の方針を決めることができました。

    2012年3月7日 17:13