すべて同じではありませんか?
短い答えは、「ユースケースによって異なりますが、同じ機能を果たすことができます」
誰もがこれにいくつかの光を当てることができますか?
どのように違いますか?
まず、イベントが定義されている基本クラスを見てみましょう。
MouseDown
とPreviewMouseDown
はSystem.Windows.UIElement
Click
からであるSystem.Windows.Controls.Primitives.ButtonBase
からです。
UIElement
は、より多くのクラスがそれから派生することを意味するButtonBase
より高い抽象です。つまり、複数のクラスはMouseDown
とPreviewMouseDown
イベントがありますがないClick
イベント
はまた、UIElement
は、このようにButtonBase
もMouseDown
とPreviewMouseDown
イベントを持っているからButtonBase
自体が派生していることに注意してください。
しかしButtonBase.Click
のドキュメントに記載されているように:
ButtonBase
はOnMouseLeftButtonDown
方法で取り扱うようMouseLeftButtonDown
イベントをマークし、Clickイベントを発生させます。したがって、ButtonBase
を継承するコントロールでは、OnMouseLeftButtonDown
イベントは発生しません。
これは、どのようにしてButtonBase
でイベントがどのように発生したのですか?
以下の説明は、唯一の3つのイベント(PreviewMouseDown
、MouseDown
、およびClick
)を考慮することに注意してください。上記の3つのイベントの前/間/後に他のイベントが関与することがありますが、議論の目的では無視されます。
PreviewMouseDown
は、マウスボタン(左または右)を押した直後に常に最初に起動します。
MouseDown
右クリックを使用すると次に発生します。
Click
を使用すると、次の発生しますが、Click
、マウスの左ボタンもButtonBase
にフォーカスがあると、ユーザーがEnterキーを押すか、スペースキーとき、追加するにはButtonBase
にリリースされた場合だけを左クリック火災ではなくPreviewMouseDown
MouseDown
とPreviewMouseDown
イベント(基本的にはXXXイベントとPreviewXXXイベント)との差に全く新しい議論がありますされます。そのトピックに進むには、Routed Eventsのドキュメントを参照してください。
ありがとうございます。だから、もし私がボタンを持っていて、ボタン効果を持たせたいのであれば、どちらを使うべきですか?私はMouseDownイベントを使用してみましたが、効果は機能しませんでしたが、PreviewMousedownやClickイベントを試してみると効果があります。私は混乱しています。 –
探しているボタンの効果はわかりませんが、ButtonBaseクラス、またはその派生クラス/コントロール(Button、ToggleButtonなど)が既に実装していると思います。いいえ、ホイールを再開発する必要はありません。 –
XAMLで実装されたボタンでマウスイベントを使用しようとしましたが、私が望む効果が得られません。 Strange –