0

関連する問題に関するいくつかの記事を読みましたが、これは矛盾しているようです。

マウスがクリックされたときにマウスの位置をキャプチャする必要があるデータグリッド コントロールがあります。mouseup および mousedown イベントハンドラーでこれを行うコードがあります。mousedown が欲しいのですが、そのイベントは決して発生しません。そこにコードを配置してブレークポイントを設定しましたが、そのポイントに到達しません。ただし、マウスアップは必要に応じて起動しますが、必要なイベントではなく、予測できない結果が得られます。

何が起こっているのかを説明する記事はありますか? ある種のルーティング イベントの問題だと思います。しかし、なぜマウスアップは機能するのにマウスダウンは機能しないのですか? すべてのイベントが必要なときに発生するようにコードを修正するにはどうすればよいですか?

4

1 に答える 1

0

データグリッド内のセルが MouseDown イベントをキャプチャしているため、問題が発生しています。次の方法で、コードでそのイベントのサブスクライブを試みることができます。

DataGridName.AddHandler(MouseDownEvent, new MouseButtonEventHandler(DataGridName_MouseDown), true);

または、それがやりたくない場合は、使用できる DataGrid に既に割り当てられている PreviewMouseDown イベントもあると思います。

これが役立つことを願っています。

于 2011-05-09T16:04:05.453 に答える