【发布时间】: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