VB.NET で列固定を「解除」する方法

VB.NET で DataGridView で作成した表の列固定(Excelで「ウィンドウ枠の固定」って言うやつやね)を行いたい。
それも、動的に。

ある検索条件で取得したデータを展開したときは 2列目で、他の検索条件のときは 5列目を・・・みたいな感じ。

IF hogehoge THEN
    dataGrid1.Columns(1).Frozen = True
ELSE
    dataGrid1.Columns(4).Frozen = True
END IF

こんなんでいいかなと。

そしたら、一旦 5列目で列固定したあとに 2列目の列固定に戻らないのよ。
.Columns(1).Frozen = True を実行しても、列固定は 5列目で行われているまま。

もしかして、現在設定中の列固定位置を一旦クリアしてからセットし直せばいいのかな?と思って、

IF hogehoge THEN
    dataGrid1.Columns(4).Frozen = False
    dataGrid1.Columns(1).Frozen = True
ELSE
    dataGrid1.Columns(1).Frozen = False
    dataGrid1.Columns(4).Frozen = True
END IF

とかやってみたけど状況変わらず。
ただ、.Columns(4).Frozen = False ってやると、5列目じゃなく 4列目が固定されているな。列固定が左にひとつ動いた(笑)

どうも、.Columns(4).Frozen = True とした時点で、5列目まで全列で列固定が True になってるんだな(^^;
だから、.Columns(1).Frozen = True としても、もともと 1~5列目まで全て True になっている状態なので何も変わらない(^^;

というわけで、Frozen のセットをする前に、

FOR i AS Integer 0 TO dataGrid1.Columns.Count - 1 
    dataGrid1.Columns(i).Frozen = False
NEXT

してから処理するようにしたら、無事、2列目の固定が有効になった。

しかし、多分、なんか一発で Frozen をクリアする方法はあるんだろうな(笑)。Frozen そのものを有効/無効にするプロパティがあるみたいなんで、あれで一旦無効にすれば Frozen の設定は一旦全クリアされるかもしれんね。もう動いてるんで試してみないけど(笑)

ところで、ネット上を調べてみたけど、こういう動的に固定列を変更して云々みたいな説明しているページ、ひとつもなかったな。
皆、Microsoft や有名ブロガーのページのコピーばかりで「列固定する方法」しか載ってない。役に立たんわぁ~(^^;

トラックバック(0)

このブログ記事を参照しているブログ一覧: VB.NET で列固定を「解除」する方法

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/6757

コメントする

このブログ記事について

このページは、shinodaが2024年3月22日 12:45に書いたブログ記事です。

ひとつ前のブログ記事は「今シーズン最後の雪かな?」です。

次のブログ記事は「30時間以上の徹夜仕事明けで松屋の牛めし」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら