WindowsフォームのDataGridViewで自動的に行の高さを調整する方法

2022年4月12日C#,ITDataGridView,VisualStudio,Windowsフォーム

やりたいこと




↑のようにセル内で改行があり全ての行が表示できていない場合、
自動的に行の高さをセル内容によって調整できたら便利です。

どうすれば自動的に行の高さを調整できるか説明していきます。

DataGridViewで自動的に行の高さを調整する方法

DataGridViewのAutoSizeRowsModeで行の高さの自動調整が設定できます。

//行ヘッダー&全セルの内容に合わせて行の高さ自動調整
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
//全セルの内容に合わせて行の高さ自動調整 ※行ヘッダーは除く
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
//行ヘッダーに合わせて行の高さを自動調整
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllHeaders;
//行ヘッダー&表示セルの内容に合わせて行の高さ自動調整
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;
//表示セルの内容に合わせて行の高さ自動調整 ※行ヘッダーは除く
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
//表示行ヘッダーに合わせて行の高さ自動調整
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedHeaders;
//業の高さを自動調整しない
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;

上記のプロパティ設定値を一つずつ説明していきます。

AllCells

行ヘッダー&全セルの内容に合わせて行の高さを自動調整します。

行ヘッダー、スクロールしないと表示されない部分も調整されています。

AllCellsExceptHeaders

全セルの内容に合わせて行の高さ自動調整 ※行ヘッダーは除く

AllHeaders

行ヘッダーに合わせて行の高さを自動調整

DisplayedCells

行ヘッダー&表示セルの内容に合わせて行の高さ自動調整


行ヘッダーと表示セルに合わせて自動調整をするはずですが……、
なぜか【AllCells】の時と同じ結果になってしまいました。
設定ミスかもしれません。原因が分かったら修正します。

【AllCells】に比べて表示セルしか対象にしないので、
パフォーマンスは良くなるはずです。
DataGridViewが重い時はDisplayedCellsを採用するといいかもしれません。

DisplayedCellsExceptHeaders

表示セルの内容に合わせて行の高さ自動調整 ※行ヘッダーは除く


なぜか【AllCellsExceptHeaders】と同じ結果になります。
表示セルというのはDataGridViewの初期表示部に表示されているセルのことを指す、
と思っていましたが、もしかしたら違うのかもしれません。

DisplayedHeaders

表示行ヘッダーに合わせて行の高さ自動調整


これも【AllHeaders】と同じ結果になっています。

None

行の高さを自動調整しません。

まとめ

ALL系とDisplay系の結果がイコールになるという現象が起きています。
なぜだ……?
僕が何か勘違いしている可能性が高いです。
知っている人がいれば是非教えてください。
ALL系よりはDisplay系の方が軽いはずなので、
支障がなければDisplay系を使うと良いかもしれません。

Windowsフォーム関連記事

2022年4月12日C#,ITDataGridView,VisualStudio,Windowsフォーム

Posted by raishin