如何在更新其列时暂停 DataGridView [英] How to suspend a DataGridView while updating its columns

查看:24
本文介绍了如何在更新其列时暂停 DataGridView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How can I suspend a .NET DataGridView from displaying anything while I update its Columns?

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

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.

// 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);

推荐答案

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

You can use VirtualMode with DataGridView in order to very efficiently update the grid. See this article: http://msdn.microsoft.com/en-us/library/ms171622.aspx

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

From what I remember, it seems to update the entire collection before updating anything on the UI, as opposed to adding to the UI for each new row added/etc.

这篇关于如何在更新其列时暂停 DataGridView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆