【问题标题】:How to optimize the performance of DataGridView如何优化DataGridView的性能
【发布时间】:2011-08-05 06:39:08
【问题描述】:

我的 Windows 应用程序窗体上有一个 DataGridView 控件。此 DataGridView 基于纯文本文件(由用户在运行时指定)填充。因此,列数和行数是动态计算的。现在一切正常,唯一的问题是我的 DataGridView 花了很多时间来加载数据,有没有办法优化 DataGridView 的性能?

提示:通常 datagridview 包含 1024 列和 100 行。

以下是填充我的 DataGridView 的代码

dataGridView1.ColumnCount = nColumnCount;

for (int i = 0; i < CurrPageLines.Length; i++)
{
    string sCurrLinecontents = CurrPageLines[i];
    int n = dataGridView1.Rows.Add();
    for (int j = 0; j < /*nColumnCount*/sCurrLinecontents.Length; j++)
    {
        dataGridView1.Rows[n].Cells[j].Value = sCurrLinecontents[j];
    }
}

【问题讨论】:

  • 您确定需要 1024 列吗?什么用户会阅读所有这些内容?
  • 我想,你应该把这个网格分成很多网格,没有人读1024列..
  • 加载足以使网格看起来像数据已加载。继续在另一个胎面的背景中加载。然后在用户查找时加载其他数据。
  • @Jon 你的建议很好,当有很多行时,当有很多列时并不重要,因为所有列只有一行
  • @Erno @Soner Gönül 每个单元格中只有一个字符,并且还有水平和垂直滚动条

标签: c# .net winforms performance datagridview


【解决方案1】:

MSDN 上有一篇文章how use the virtual mode of the datagridview。它甚至带有a nice walkthrough example。尽管它似乎更针对大量行而不是大量列,但它可能仍然有用。

更新:如果您只是在加载数据时遇到延迟,您可以通过从您的文本文件创建 DataTableBindingList 然后将其绑定到视图来改进事情。

【讨论】:

  • 我投了赞成票,因为我正要提出同样的建议。首先创建一个列表,然后将其绑定到数据网格。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 2019-06-19
  • 2014-03-08
  • 2021-03-04
  • 2017-08-22
相关资源
最近更新 更多