设置DataGridView columns属性需要太长时间

时间:2018-06-15 13:56:33

标签: c# winforms datagridview

我的Form内部只有DataGridView,我用{5}行绑定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;
}

1 个答案:

答案 0 :(得分:-1)

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