If the DataGridView seems unwilling to change the column-order even when specifically ordered to, then the reason is probably that AutoGenerateColumns is set to true.

The symptoms are not very consistent, because it will seem like it’s possible to move some columns but not others, which may lead one into a wild goose-chase for the reason why the particular column that one is trying to position can’t be positioned exactly where one wants.