3

ウィンドウがテキスト ボックスによって発生した KeyDown イベントを処理し、イベントの Handled フラグを true に設定すると、テキスト ボックスは押されたキーを無視し、その内容に追加しないことに気付きました。

物事がどのように機能するかについての私の理解によれば、PreviewKeyDown イベントは、最初にウィンドウから TextBox にトンネリングし、次に KeyDown イベントが TextBox からウィンドウにバブリングしている場合です。ウィンドウのイベント ハンドラーが Handled イベントを設定するまでに、イベントは TextBox によって処理されなくなりますが、効果があることがわかり、押されたキーは TextBox に追加されません。

誰かがこれがどのように機能するか説明できますか?

(これは一般的な質問ですが、私たちが使用しているサードパーティ製のコントロールで同様の動作を見た後に提起されたもので、コントロールでイベントを処理したいが、上向きにバブルしないようにしたかったため、問題が発生しました。)

4

1 に答える 1

0

実際には、処理されるかどうかに関係なく、これらのイベントは常にバブル/トンネルになります。ほとんどのイベント ハンドラーが「処理された」イベントを受信するように登録されていない場合です。

たとえば、KeyDown イベントに対してサブスクライブし、どこかで処理された場合でも「呼び出し」を受け取るオプションがあります。

しかし、はい、イベントの順序は通常、トップ (トンネリング) から始まり、トンネルを通過して要素に戻り、バブルアップします。

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-10-11T19:42:14.673 に答える