C#循环来填充多个DataGridView

我知道这是一个愚蠢的问题,我可能听起来有点困惑(因为我真的是)。我编程一个软件工作,但我是新来的C#。 我有一个TabControl的窗体。 在每个TabPage中我有一个DataGridView。

我需要为每个DataGridView执行此代码

while (reader.Read()) { DataTable dtSchema = reader.GetSchemaTable(); DataTable dt = new DataTable(); // You can also use an ArrayList instead of List<> List<DataColumn> listCols = new List<DataColumn>(); if (dtSchema != null) { foreach (DataRow drow in dtSchema.Rows) { string columnName = System.Convert.ToString(drow["ColumnName"]); DataColumn column = new DataColumn(columnName, (Type)(drow["DataType"])); column.Unique = (bool)drow["IsUnique"]; column.AllowDBNull = (bool)drow["AllowDBNull"]; column.AutoIncrement = (bool)drow["IsAutoIncrement"]; listCols.Add(column); dt.Columns.Add(column); } } // Read rows from DataReader and populate the DataTable while (reader.Read()) { DataRow dataRow = dt.NewRow(); for (int i = 0; i < listCols.Count; i++) { dataRow[((DataColumn)listCols[i])] = reader[i]; } dt.Rows.Add(dataRow); } dataGridView1 = dt; } reader.NextResult(); 

我不想复制和粘贴每个datagridview的代码,因为在这个代码部分应该改变的唯一字是DGV的名称,但我不知道如何自动更改datagridview名称。 也许一些嵌套如果比较datagridview的名称与string可能是一个解决scheme,但我想datagridview.tostring()不会给我的控制名称的string,但内容。 我很抱歉,如果这样的问题已经存在,我无法find它。

您可以使用foreach循环DGV:

 foreach (DataGridView dgv in new[] { dataGridView1, otherDGV }) { // code to happen to both DGVs goes here. }