やりたいこと
DataGridViewの行の高さを内容に合わせて変更し、なおかつ最小の高さも決めておきたい。
困ったこと
dataGridView.AutoResizeRowsをAllCellsにすると、コラムの中の一番大きいコラムに合わせて行が変更されるが、最小の高さまでは決められない。MinimumHeightというプロパティもあるけど、これは逆に最大の高さになる感じ(名前が紛らわしい)。
解決方法
各行のセルで一番大きい行の高さを取得する。
以下の例では、行の最小値は50で、一番大きい行がそれ以下なら、50になる。
foreach(DataGridViewRow row in dataGridView.Rows)
{
var cells = row.Cells.Cast<DataGridViewCell>();
int maxHeight = cells.Max(n => n.PreferredSize.Height);
row.Height = maxHeight > row.Height ? maxHeight : 50;
}
Heightではなく、PreferredSize.Heightにしている。heightだと内容に合わせたサイズではなくて、もともと行として決まっているHeightが取得されるのか。