DataGridView -添加列没有恒定的水平滚动条更新(Winforms)

本文关键字:滚动条 水平 更新 Winforms 添加 DataGridView | 更新日期: 2023-09-27 18:05:46

我有一个DataGridView和我需要添加几个(说20)列到它的动态。当我这样做的时候

foreach (var columnName in ColumnNames)
     dataGridView.Columns.Add(columnName, columnName);

水平滚动条尝试在每次添加新列时保持最新。所以用户看到奇怪的滚动条收缩。当添加所有列时,我只需要更新一次水平滚动条。我该如何做到这一点?
附注:我试着这样做:

((System.ComponentModel.ISupportInitialize)(dataGridView)).BeginInit();
dataGridView.SuspendLayout();
foreach (var columnName in ColumnNames)
{
     dataGridView.Columns.Add(columnName, columnName);
}
((System.ComponentModel.ISupportInitialize)(dataGridView)).EndInit();
dataGridView.ResumeLayout(false);

DataGridView -添加列没有恒定的水平滚动条更新(Winforms)

您可以使用datagridviewcolumncollection . adrange。这可能有助于更新。

dataGridView.Columns.AddRange(Columns);

给定列名的AddRange示例(未经测试但应该可以工作):

// Assuming ColumnNames is a list of column names    
DataGridViewColumn[] columns_to_add = 
   new DataGridViewColumn[ColumnNames.Count];
for(int i = 0; i < ColumnNames.Count; i++)
{
   // Add whatever column type you want
   columns_to_add[i] = new DataGridViewTextBoxColumn();
   columns_to_add[i].HeaderText = ColumnNames[i];
   columns_to_add[i].Name = ColumnNames[i];
}
dataGridView.Columns.AddRange(columns_to_add);