title: How to suspend a DataGridView while updating its columns
body: <p>How can I suspend a .NET DataGridView from displaying anything while I update its Columns?</p>
  
  <p>Here's my current code.  It works ok, but it is very slow on the foreach loop; you can see the horiz scroll bar grow slowly as each column is added.  I'm building the UI columns myself as I do not want to use dataGridView1.AutoGenerateColumns for various reasons.</p>
  
  <pre><code>// Disconnect and reset DataGridView
  dataGridView1.DataSource = null;
  dataGridView1.SuspendLayout();
  dataGridView1.Columns.Clear();
  
  // Get data from SQL
  DataTable dt = new DataTable();
  SqlDataAdapter adapter = new SqlDataAdapter("select * from employeehist", conn);
  adapter.Fill(dt);
  
  // Build DataGridView columns
  foreach (DataColumn c in dt.Columns)
  {
      DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
      col.SortMode = DataGridViewColumnSortMode.NotSortable;
      col.DataPropertyName = c.ColumnName;
      col.HeaderText = c.Caption;
      dataGridView1.Columns.Add(col);
  }
  
  // Reconnect DataGridView
  dataGridView1.DataSource = dt;
  dataGridView1.ResumeLayout(true);
  </code></pre>