Wizardzz was on the right track; I got this from another site:
private int GetDataGridViewMinWidth(DataGridView dataGridView) {
var controlBorderWidth = (dataGridView.BorderStyle == BorderStyle.None) ? 0 : 2;
return dataGridView.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) + dataGridView.RowHeadersWidth + controlBorderWidth;
}