使用Wrapmode设置自动调整行的DataGridView会显着降低性能

时间:2013-08-17 17:51:34

标签: c# winforms datagridview

所以,我有一个DataGridView,它禁用了行标题,为多行单元格文本设置了wrapmode,并调整了行的自动调整以适应多行文本。

在代码中:

view.RowHeadersVisible = false;
view.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
view.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

问题是,与没有设置相比,设置AutoSizeRowsMo​​de属性会使视图更新速度变慢。

以下是一个或多或少相同问题的链接:

http://brianseekford.com/index.php/2010/04/01/datagridview-bug-with-the-autowrap-and-the-autorowsize-not-resizing-rows-on-scroll/

他们的解决方案:

view.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;

view.Scroll +=new ScrollEventHandler(view_Scroll);

private void view_Scroll(object sender, ScrollEventArgs e)
{
   //Workaround for datagrid view bug.
   ((DataGridView)sender).AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedHeaders;
   ((DataGridView)sender)AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;
}

现在,问题是行标题被禁用,因此我的程序在滚动时就崩溃了。

我希望任何人都能找到解决办法,或至少知道我能做些什么。

1 个答案:

答案 0 :(得分:1)

您只需要这个来自动调整行(不需要view_Scroll)。

view.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;