如何使用adrange向datagridview添加列

本文关键字:添加 datagridview 何使用 adrange | 更新日期: 2023-09-27 18:03:07

我看到有人使用下面的代码一次添加多个列。下面是代码

        var col3 = new DataGridViewTextBoxColumn();
        var col4 = new DataGridViewCheckBoxColumn();
        col3.HeaderText = "Column3";
        col3.Name = "Column3";
        col4.HeaderText = "Column4";
        col4.Name = "Column4";
        dataGridView1.Columns.AddRange(new DataGridViewColumn[] {col3,col4});

但我的情况有点不同。这样我就可以在循环中为datagridview添加列。

foreach (DataColumn column in retriever.Columns)
{
    dataGridView1.Columns.Add(column.ColumnName, column.ColumnName);
}

任何人都可以告诉我如何修改我上面的代码来使用addrange() instead of add()函数。我的目的是一次添加所有列,而不是添加循环。

如何使用adrange向datagridview添加列

试试这个:

DataGridViewColumn[] column_array = new DataGridViewColumn[retriever.Columns.Count];
    for (int cnt = 0;cnt < retriever.Columns.Count;cnt++)
    {
        DataGridViewColumn col = new DataGridViewColumn();
        col.Name = retriever.Columns[cnt].Name;
        col.HeaderText = retriever.Columns[cnt].HeaderText;
        column_array[cnt] = col;
    }
     dataGridView1.Columns.AddRange(column_array);

你可以这样修改你的代码:

DataGridViewColumn[] arr = 
retriever.Columns.Select(d=>new DataGridViewColumn()
{Name = d.ColumnName,HeaderText = d.ColumnName}).ToArray();
dataGridView1.Columns.AddRange(arr);

可以使用linq Select语句:

dataGridView1.Columns.AddRange(retriever.Columns.Cast<DataColumn>().Select(n => new DataGridViewColumn
{
    Name = n.ColumnName,
    HeaderText = n.ColumnName
}));  

,但最理想的将是foreach:

retriever.Columns.Cast<DataColumn>().ToList().ForEach(n => dataGridView1.Columns.Add(n.ColumnName, n.ColumnName));

它仅仅是另一种解决方法的例子。我认为你现在初始化这个列表的方法是完全正确的。