更改DataGridView中所有列的宽度

时间:2011-07-06 13:38:53

标签: performance datagridview datagridviewcolumn

我们有一个包含2048列的DataGridView。我们必须为用户提供一种增加和减少DataGridView中所有列宽度的方法。

目前,我们在按钮点击处理程序中执行以下操作:

for (int i = 0; i < dgv.Columns.Count; i++)
{
   dgv.Columns[i].Width += 5;
}

但这需要一段时间! (约2秒钟更具体)。 (注意:我们将ColumnHeadersHeightSizeMode属性设置为DataGridViewColumnHeadersHeightSizeMode.DisableResizing以获得一些性能,但这并没有削减它)

是否有更快的方法来实现列调整大小?

1 个答案:

答案 0 :(得分:1)

您可以尝试将单独的事件附加到每个列的按钮单击,如下所示:

for (int i = 0; i < 500; i++)
{
    DataGridViewTextBoxColumn c = new DataGridViewTextBoxColumn();
    dataGridView1.Columns.Add(c);

    button1.Click += (o, e) => {                    
        c.Width = 10;                    
    };
}

我试着这样做,看起来很有效。我不确定是否有任何副作用,是否有更好的方法,甚至是否适用于一个非平凡的例子 - 我的所有列都是空的并且没有绑定。