【问题标题】:Setting DataGridView columns property takes too long设置 DataGridView 列属性需要太长时间
【发布时间】:2018-06-15 13:56:32
【问题描述】:

我有一个 Form,里面只有一个 DataGridView,我用 5k 行将 DataSource 绑定到它,然后我更改了列宽。

这里的问题是,当我只设置DataSource而不改变列的宽度时,表单会立即显示,但是当我更改列样式时,显示需要3-4秒。

我在互联网上找到的所有内容都是关于“数据源绑定很慢”,但我这里没有这个问题。

我该如何改进?

编辑:发现只有AutoSizeColumnMode 需要太长时间。这是为什么呢?

public IzborRobe1(Dokument dokument)
{
    InitializeComponent();

    dataGridView1.DataSource = dokument.robaUMagacinuKomercijalno;

    //Without this down code it instantly shows
    dataGridView1.Columns["KATBR"].Width = 100;
    dataGridView1.Columns["KATBRPRO"].Width = 100;
    dataGridView1.Columns["ROBAID"].Visible = false;
    dataGridView1.Columns["NAZIV"].Width = 400;
    dataGridView1.Columns["STANJE"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["JM"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["PRODAJNACENA"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    //=======================================================

    numericUpDown1.Enabled = false;
    numericUpDown1.BackColor = Color.DimGray;
}

即使我把它放在Thread()里面也需要同样的时间:

public IzborRobe1(Dokument dokument)
{
    InitializeComponent();

    dataGridView1.DataSource = dokument.robaUMagacinuKomercijalno;

    Thread t1 = new Thread(() =>
    {
        dataGridView1.Columns["KATBR"].Width = 100;
        dataGridView1.Columns["KATBRPRO"].Width = 100;
        dataGridView1.Columns["ROBAID"].Visible = false;
        dataGridView1.Columns["NAZIV"].Width = 400;
        dataGridView1.Columns["STANJE"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
        dataGridView1.Columns["JM"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
        dataGridView1.Columns["PRODAJNACENA"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    });
    t1.Start();

    numericUpDown1.Enabled = false;
    numericUpDown1.BackColor = Color.DimGray;
}

【问题讨论】:

  • 你可以试试this。也值得看看该问题中的其他答案。
  • 它正在工作。这个答案被低估了。

标签: c# winforms datagridview


【解决方案1】:

在将数据加载到 Datagridview 之前,您应该将 AutoSizeColumnsMode 设置为 DataGridViewAutoSizeColumnsMode.None

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 2010-12-10
    • 1970-01-01
    • 2012-03-17
    • 2015-12-16
    • 1970-01-01
    • 2022-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多