4

マウス/キーアップ/ダウンイベントハンドラーで複数のフラグを設定する以外に、ボタンのクリックイベントをトリガーしたものを簡単に知る方法はありますか? 私は現在、マウスを他のすべてのものと区別することだけに関心がありますが、可能であればスタイラスやその他の入力タイプを処理できるとよいでしょう。これを実現するには、独自のボタン コントロールを作成する必要がありますか?

編集:私が気にする理由を明確にするために:この特定のケースでは、一種の画像ビューア用に「次へ」ボタンと「前へ」ボタンを実装しようとしています。問題の写真はサイズが異なる場合があり、ボタンの位置が変わる場合があります (したがって、ボタンは常に写真の下の中央に配置されます)。複数の画像をスクロールする必要がある場合、そのようなボタンをマウスでたどるのは非常に面倒なので、クリックされたボタンに対してマウスの位置を一定に保ちたいのですが、キーボードではなくマウスでクリックされた場合に限ります。

Edit2: ボタンが上にあるか下にあるかは関係ありません。とにかく中心が変わる可能性があるためです。ここでの「画像ビューア」は単なる抽象化であり、この特定のケースでは、画像の左上隅がその位置を保持することが重要ですが、詳細に進むことは問題の範囲外です. この種のアプリケーションでも、画像のスケーリングはそれほど簡単ではないため、UI 実装の議論に入る前に、私が尋ねた質問に対する答えを知りたいと思います。

4

5 に答える 5

8
if (InputManager.Current.MostRecentInputDevice is KeyboardDevice)
于 2008-12-09T15:33:31.537 に答える
0

なぜ気にするのか詳しく教えてください。

何年にもわたって自分で多くのカスタムコントロールを作成してきましたが、クリックイベントがどのようにトリガーされたかを気にした1つのインスタンスを思い出せません。(ボタンをクリックしたか、アクセラレータキーを使用したか、デフォルトでEnterキーを押したかによって、フォーカスの取得-クリック-フォーカスの喪失の順序が異なる、VB6以前のコントロールライフサイクルグリッチを除きます)。

于 2008-12-07T03:39:19.730 に答える
0

さまざまなデバイスで列挙を作成し、マウス/キーボードなどのたびに設定するグローバル プロパティを持つことができます。必要に応じて参照してください。

于 2008-12-09T15:39:46.563 に答える
0

代わりに、MouseXXX、StylusXXX、および KeyboardXXX イベントを具体的に処理する必要があります。

于 2008-12-07T03:21:37.163 に答える
0

個人的には、人々が Windows フォームや Web ページの下部にボタンを配置するのは面倒です。UI に関する文献をいくつか読むと、ほとんどの人は、ページやフォームに何か興味深いものを見つけられなければ、そこまでたどり着けないことがわかります。コンテンツに興味がないことがわかったらすぐに次へをクリックできるようにしたいので、ナビゲーション ボタンを一番上に置いておきます。

前/次を写真の上部に配置して、位置を制御できるようにします。これらのボタンを踊らせることは、UI の一貫性に関するほとんどの意見に反します。さらに、マウス ユーザーとキーボード ユーザーに異なるエクスペリエンスを作成することは、優れた UI 設計に関する最新の知恵に反します。

もう 1 つの方法は、画像が UI で取得できる一定の最大サイズを選択することです。サイズが収まらない場合はそのサイズを超える場合、それ以外の場合はフレーム内で自由に変更できるようにします。これにより、ボタンを下に配置する必要がある場合でも、ボタンを同じ場所に配置できます。

于 2008-12-07T18:15:32.897 に答える