如何在更新其列时挂起DataGridView

Lan*_*ane 14 .net c# datagridview winforms

在更新其列时,如何暂停.NET DataGridView显示任何内容?

这是我目前的代码.它工作正常,但在foreach循环中它很慢; 你可以看到horiz滚动条在添加每列时缓慢增长.我自己构建UI列,因为我不想出于各种原因使用dataGridView1.AutoGenerateColumns.

// 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);
Run Code Online (Sandbox Code Playgroud)

fer*_*err 4

您可以将 VirtualMode 与 DataGridView 结合使用,以便非常有效地更新网格。请参阅这篇文章:http://msdn.microsoft.com/en-us/library/ms171622.aspx

据我所知,它似乎在更新 UI 上的任何内容之前更新整个集合,而不是为添加的每个新行/等添加到 UI。