まとまりのないブログ

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

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

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

no image

datagridの内容をmschartに表示

ボツになった案。vb6用のランタイムが無いとmschartは表示することができないので自分は使うことができないけど、誰かほかの人の参考になればと思って。やろうとしてたことのサンプルコードは下記に載せて …

no image

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

————————— Microsoft Visual Studio —&#821 …

no image

文字列中にある一部分だけを置き換える

備忘。正規表現を使ってある条件にマッチする場合、その文字列の一部分を別の文字列に置き換える、ということをやってみる。たとえば次のような文字列があったとする。 “00 abcde&#8221 …

no image

menustripのショートカットキーが効かない

また嵌ってしまったので備忘録。vb.netのmenustripコントロールに配置されたアイテムにshortcutkeysプロパティでキーを割り当てても、ショートカットが機能しない現象について。shor …