private void DetermineRequiredColumnWidths(List<int> requiredWidths, int columnCount)
{
var padding = this.ColumnAutoSizingPadding;
using (var gfx = this.CreateGraphics())
{
foreach (DataGridViewRowWin row in this.Rows)
{
for (var i = 0; i < columnCount; i++)
{
if (requiredWidths[i] < 0) continue;
var value = (row.Cells[i].Value == null) ? "" : row.Cells[i].Value.ToString();
var size = gfx.MeasureString(value, this.Font);
var requiredWidth = size.Width + padding;
if (requiredWidth > requiredWidths[i])
requiredWidths[i] = (int) Math.Ceiling((decimal) requiredWidth);
}
}
}
}