Reputation: 6557
I have a DataGridView and I need to add several (say 20) columns to it dynamicly. When I do it like this
foreach (var columnName in ColumnNames)
dataGridView.Columns.Add(columnName, columnName);
horizontal scroll bar tries to stay up to date every time new column is added. So user sees strange scroll bar shrinking. I need to update horizontal scroll bar only once when all columns are added. How do I accomplish this?
P.S. I tried to do it like this:
((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);
but it didn't help.
Upvotes: 1
Views: 979
Reputation: 49978
You could use DataGridViewColumnCollection.AddRange. This might help with the updating.
dataGridView.Columns.AddRange(Columns);
An example of AddRange given columns name (untested but should work):
// 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);
Upvotes: 1