日期:2014-05-17  浏览次数:21096 次

动态设置dataGridView的列宽问题,急...
本帖最后由 hugofgh 于 2013-09-04 16:38:58 编辑
面板上有很多Datagridview,动态设置每个dataGridView的列宽时很耗时间,一个datagridview大概12列左右,现在设置完一个dataGridView的列宽需要耗时2到3秒。
设置列宽时已经取消了dgvDataViewer_ColumnWidthChanged和dgvDataViewer_CellFormatting事件。
怎么样才能缩短时间,为什么要这么长时间,求解释,求解决办法。

代码如下:
                _gridview.Columns[1].Width = 70;
                _gridview.Columns[2].Width = 130;
                _gridview.Columns[3].Width = 120;
                for (int j = 4; j < _gridview.Columns.Count; j++)
                {
                    _gridview.Columns[j].Width = 120;
                }


补充:如果这个Datagridview之前进去过,再设置列宽需要耗时2到3秒,但是如果这个Datagridview没有进去过,列宽很快就设置完了。
datagridview C#

------解决方案--------------------
AutoSizeColumnsMode = none;
AutoSizeRowsMode = none;

多个Grid时,只对当前显示的Grid设置列宽
120000个数据

开始Load 中的
15:40:07.942
15:40:07.957
将所有的列宽修改后点击按钮
15:41:06.270
15:41:06.270


private void Form1_Load(object sender, EventArgs e)
        {
            var dt = CreateDisTable();

            for (int i = 1; i <= 10000; i++)
            {
                DataRow nr = dt.NewRow();

                for (int j =0; j < 12; j++)