Hola, tokero!
antes de nada gracias por responder.
He probado lo que pusiste pero la 2 línea da error, no la permite (Dim columna as DataGridViewColumn in DataGridView1.Columns)
De todas maneras, lo he intentado con un "for" en vez de con un "for each" como sugieres, pero me hace lo mismo, no contempla el cambio de orden de las columnas.
Código:
For x As Integer = 0 To DataGridView1.Columns.Count - 1
MessageBox.Show(DataGridView1.Columns(x).Name.ToString)
Next
¿era esto lo que me decías? ¿alguna otra manera que se os ocurra?