[英]DataGridView - Adding columns without constant horizontal scroll bar update (Winforms)
I have a DataGridView and I need to add several (say 20) columns to it dynamicly.我有一个 DataGridView,我需要动态添加几个(比如 20 个)列。 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?
我该如何做到这一点?
PS I tried to do it like this: PS我试着这样做:
((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.但这没有帮助。
You could use DataGridViewColumnCollection.AddRange .您可以使用DataGridViewColumnCollection.AddRange 。 This might help with the updating.
这可能有助于更新。
dataGridView.Columns.AddRange(Columns);
An example of AddRange given columns name (untested but should work):给定列名的 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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.