Try SuspendLayout to speed it up. (Added some extra code that hopefully speeds up the process)
this.SuspendLayout();
try
foreach (DataColumn col in _AllData.Columns)
{
FilterColumnClass fc = _FilterColumns.Find(delegate(FilterColumnClass item) { return item.ColumnName == col.ColumnName; });
if (fc != null)
{
filter.Index = index;
}
{
FilterColumnClass new_filter = new FilterColumnClass();
}
} finally
{
this.ResumeLayout();
}
Good luck!