我在DataGridView中显示的表格最多包含100,000行。该表有一列,其中包含大字符串。我发现将AutosizeMode
设置为AllCells
会导致应用程序冻结很长一段时间,同时它计算所需的宽度。
作为一种折衷,我将“自动调整大小”模式设置为DisplayedCells。
然后,我将一个方法绑定到dataGrid的scroll事件:
public void MethodThatBindsDataToTheDatagridview(DataTable table)
{
dataGrid.Source = table;
dataGrid.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
dataGrid.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
}
public void DataGridScroll(object sender, ScrollEventArgs e)
{
((DataGridView)sender).Update();
}
我也尝试了
Refresh
方法。我的期望是DataGrid将根据显示的行设置列宽。但是,这仅在加载表时发生一次,但是scroll事件不会触发列宽的更改。 最佳答案
您需要做的是在datagridview上调用AutoResizeColumn方法:
dataGrid.AutoResizeColumn(1, DataGridViewAutoSizeColumnMode.DisplayedCells);
dataGrid.AutoResizeColumn(2, DataGridViewAutoSizeColumnMode.DisplayedCells);