private List<int> GetColumnHeaderRequiredWidths()
{
var requiredWidths = new List<int>();
var padding = this.ColumnAutoSizingPadding;
using (var gfx = this.CreateGraphics())
{
for (var i = 0; i < this.Columns.Count; i++)
{
if (this.Columns[i].Visible)
{
var heading = this.Columns[i].HeaderText;
var size = gfx.MeasureString(heading, this.Font);
requiredWidths.Add((int)(Math.Ceiling(size.Width) + padding));
}
else
requiredWidths.Add(-1);
}
}
return requiredWidths;
}