まとまりのないブログ

something which something is something

vb.net

datagridviewのcellselectの挙動

投稿日:

monthcalendarコントロールの表示が環境によって大幅に変わるため、datagridviewでカレンダーを自作したときにcellselectの挙動がどうもおかしかったのでメモ。datagridviewのプロパティでmultiselectをtrueにしてselectmodeをcellselectにすると、datagridviewのセル単位で選択をすることができるようになる。選択したセルはselecedcellsプロパティを参照すると値を取得することができるが、マウスでdatagridviewのセルを選択する方向によってインデックスの並びが異なることに気づいた。

cal_image1.png右の画像は、datagridviewで自作したカレンダーを模したもの。たとえばこのdatagridviewのセルを選択するとき、マウスの選択する操作が左上を基点に右、下、へと動いてセルを範囲選択したという場合。この場合だと、selectedcellsのインデックス0の値は26になる。そしてインデックスの最後の値は9ということになる。

cal_image2.png次に、セルを選択するときの基点が右下で、マウスを左、上、という風に動かしてセルをを範囲選択した場合。この場合だと、selectedcells(0).valueの値は12になる。インデックスの最後の値は26という風になってしまう。

cal_image3.pngもう一つのパターン。今度はセルの選択の基点が右下で、マウスを上、左、という風に動かしてセルを範囲選択した場合。この場合だと、selectedcells(0).valueの値は23、インデックスの最後の値は26という風になる。

セルの選択の方法によってインデックスの並びがそれぞれ変わり、統一性はないということになる。特にカレンダーのような順番に並んだセルの値を参照するときなどの場合に不都合が生じることになる。

-vb.net

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

no image

MonthCalendarの表示がxpとvistaでサイズが異なる

visual studio 2005のwindowsアプリケーションを作成する場合に使うコントロールの一つにMonthCalendarというのがある。これをフォーム内に配置して表示確認を行ったところ、 …

no image

visual studio 2005 が不具合を起こした

デバッグ作業中にブレークポイントを設定してからデバッグを開始したら、ブレークポイントのマークが赤い丸じゃなくて黄色で?マークが付いたものにいきなり変わった。なんぞこれ?とは思ったけど、特に気にせずにデ …

no image

windowsアプリケーションにグラフを追加してみる

MSChartを使うことを諦めて別のグラフコンポーネントを探していたところ、visual studio 2005に標準でreportviwerというコンポーネントがあることに気づいた。reportとい …

no image

メタ文字のエスケープ

sqlインジェクション対策の一つのメタ文字のエスケープ処理。ローカルで利用するwindowsアプリケーションなので、インターネット上のwebアプリのように攻撃されることはないけれど、操作している上でメ …

no image

windowsアプリケーションに最新バージョン確認の機能を追加する

現在使用しているwindowsアプリケーションのバージョンが、公開されている最新バージョンであるかどうかを確認するための機能を追加してみる。どういう実装にするのが最善かまだ見えていないけれど、単純に考 …