I've got a DataGridview I want to remove columns from as it greatly increases performance when I format the DGV.

The first time I remove columns in a loop (using the removeat) property, everythings fine. But when I try to remove more columns in another loop, it appears to remove the wrong columns and displays the wrong data. In other words, it displays the wrong data and headers; and the columns it does show has headers and cells that don't match.

I've debugged this to death and I can't see a problem with the logic in the code so I guess it must be a bug with the system. Is there any way around this?