我的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;
}
答案 0 :(得分:-1)
在将数据加载到Datagridview之前,您应该将AutoSizeColumnsMode
设置为DataGridViewAutoSizeColumnsMode.None
。