private void ResetColumns(DetailsListView list)
{
using (ControlTransaction.Update(list))
using (ControlTransaction.Layout(list, false))
{
// カラムヘッダの再設定
list.ColumnClick -= MyList_ColumnClick;
list.DrawColumnHeader -= MyList_DrawColumnHeader;
list.ColumnReordered -= MyList_ColumnReordered;
list.ColumnWidthChanged -= MyList_ColumnWidthChanged;
var cols = list.Columns.Cast<ColumnHeader>().ToList();
list.Columns.Clear();
cols.ForEach(col => col.Dispose());
cols.Clear();
InitColumns(list, true);
list.ColumnClick += MyList_ColumnClick;
list.DrawColumnHeader += MyList_DrawColumnHeader;
list.ColumnReordered += MyList_ColumnReordered;
list.ColumnWidthChanged += MyList_ColumnWidthChanged;
}
}