|
分類:[VB.NET/VB2005 以降]
DataGridViewのCellContentClickで奇妙な現象を見つけました。 (使用しているのはVB2008です。)
DataGridViewには、左からチェックボックス・ボタン・テキスト×2の列 (テキストの左列は編集可能)を用意し、データソースは使わず、 直接行データを追加しています。 また、編集可能なテキスト列のEditModeプロパティは、デフォルトのEditOnKeystrokeOrF2です。
さて、DataGridViewにデータが表示されている状態で、 編集可能な任意のテキストセルを編集モードにします。 その際に、編集中セルのテキストの任意の箇所でマウスダウンし、 それをドラッグしたまま別の列のセルの上でマウスアップすると、 CellContentClickイベントが走ってしまいます。 しかも、引数のDataGridViewCellEventArgsの行(e.RowIndex)と列(e.ColumnIndex)には マウスアップしたセルのものが入ってしまいます。
ボタン列のクリックを検知するために、このCellContentClickイベントを使っているのですが、 何かの拍子でボタン列上でマウスアップしてしまうと、ボタンが押された時に実行する処理が 走ってしまいます。 なお、編集状態でないセルをドラッグし、別の列のセル上でマウスアップしても この問題は発生しませんでした。
何かのサイト(忘れてしまいました)で、DataGridViewのボタンセルのクリックを検知するには CellContentClickを使う、と紹介されていましたので、ずっとCellContentClickを使っていましたが、 これは、CellContentClickの仕様なのでしょうか? 何かこのような情報をお持ちの方はいらっしゃいますか?
なお、CellClickイベントに変更すれば、上記のような現象は起こらないようなのですが、 CellClickイベントでよいのか分かりません。
どうぞアドバイスをお願いいたします。
|