Windows FormのDataGridView .Net Framework 4.7.2 にて

DataGridViewでDataSourceにDataTableを代入して利用する。

dataGridView1.DataSource = dt1;

1回目に列名2020/1,2020/2,2020/3,2020/4 の4つの列名を含むDataTableを設定。その後2019/10,2019/11,2019/12,2020/1 の4つを列名に含むDataTableを渡すと、重複する2020/1が 先頭に表示されてしまう。DataSource自体は全く別のオブジェクトなのだが、DataGridView側で前回のColumn情報を覚えていて、列名がマッチしたら使いまわしているのかもしれない。

対策としては、DataSourceに代入する前に

dtaGridView1.Columns.Clear();

を実行すればよい。