DataGridView - Добавление столбцов без постоянной обновления горизонтальной полосы прокрутки (Winforms) - PullRequest
1 голос
/ 17 августа 2011

У меня есть 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);

но это не помогло.

1 Ответ

1 голос
/ 17 августа 2011

Вы можете использовать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...