如何使用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()
函数。我的目的是一次添加所有列,而不是添加循环。
试试这个:
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));
它仅仅是另一种解决方法的例子。我认为你现在初始化这个列表的方法是完全正确的。