<p>I have a datagridview where the users can select which subset of columns to view. 
The problem I am having is that when I change the columns being displayed, the column widths are only being determined by the width of the Header Cells, not the data in it.
I do have each column set to AutoSizeMode = AllCells.</p>

<p>If a new row is added, the columns become the correct width. But when the set of columns is changed, the widths are wrong.</p>

Hmm... can't say I've seen that myself, but (as a workaround) you could try toggling the resize mode after you change the columns:
```
```
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
```
```
Worth a try...