我有一个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);
但它没有帮助。
答案 0 :(得分:1)
您可以使用DataGridViewColumnCollection.AddRange。这可能有助于更新。
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);