C#循环填充多个DataGridView

标签 c# windows winforms loops 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 名称。 也许一些嵌套的 if 将 datagridview 的名称与字符串进行比较可能是一个解决方案,但我想 datagridview.tostring() 没有给我控件名称的字符串,而是内容。 很抱歉,如果这样的问题已经存在,我找不到它。

最佳答案

您可以使用 foreach 循环遍历 DGV:

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

关于C#循环填充多个DataGridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45147261/

相关文章:

C#:RunWorkerAsync() 不会触发 DoWork()

c# - 为堆积条形图显示选择查询

c# - 加载用户控件时显示 "User control is loading"消息

windows - 批处理文件用文件名中的空格替换下划线

XAMPP 运行速度太慢 100 倍的 Windows 上的 PHP

c# - 有没有办法一次性批量更改 winform 标签名称?

c# - Process.GetCurrentProcess().MainWindowHandle 返回零

c# - C#中如何防止非法ICloneable<T>继承?

c# - Ria 服务和导航属性问题

c++ - 使用 C 程序启用禁用键