繁体   English   中英

从单个二维数组填充多个datagridviews

[英]Populating multiple datagridviews from a single 2 dimensional array

我最近发布了一个问题,关于如何用来自7个datagridviews的数据填充二维数组,每个datagridviews具有7行x 5列。 困惑为我提供了一段非常有效的代码,非常感谢。

public string[,] myGridData = new string[50, 5]; 
//49 data rows, last row (50) contains version number

var dgvs = new[] { dgv6, dgv5, dgv4, dgv3, dgv2, dgv1, dgv0, };

for (var i = 0; i < dgvs.Length; i++)
{
  for (int rows = 0; rows < 7; rows++)
  {
    for (int col = 0; col < 5; col++)
    {
     myGridData[rows + i * 7, col] =   dgvs[i].Rows[rows].Cells[col].Value.ToString();
    }
  }
}

我现在需要一种方法来颠倒该过程,并从原始数组中填充7个datagridviews。

我知道如何从2d数组填充单个datagridview,但不确定如何填充所有7个网格。 我用来填充1个网格的代码是:

//Populate Single DataViewGrid
var rowCount = myGridData.GetLength(0);
var rowLength = myGridData.GetLength(1);

dgv1.ColumnCount = 5;

for (int rowIndex = 0; rowIndex < rowCount - 1; ++rowIndex)
{
   var row = new DataGridViewRow();

   for (int columnIndex = 0; columnIndex < rowLength; ++columnIndex)
   {
      row.Cells.Add(new DataGridViewTextBoxCell()
      {
        Value = myGridData[rowIndex, columnIndex]
      });
   }

   dgv1.Rows.Add(row);
}

提前致谢。

就像填充2d数组一样,您需要遍历7个DataGridView控件。 将代码嵌套在该循环中,然后更改内部循环的迭代距离。 无需迭代rowCount - 1 (使用全部49行填充一个DataGridView ,而是仅迭代接下来的7行。 通过将rowIndex移动到最外层循环之外,它将在您浏览每个视图时“记住”下一个索引。

var rowCount = myGridData.GetLength(0);
var rowLength = myGridData.GetLength(1);
int rowIndex = 0;

var dgvs = new[] { dgv6, dgv5, dgv4, dgv3, dgv2, dgv1, dgv0, };

for (int i = 0; i < dgvs.Length; i++)
{
    var dgv = dgvs[i];
    dgv.ColumnCount = 5;

    for (int taken = 0; taken < 7; ++taken, ++rowIndex)
    {
        var row = new DataGridViewRow();

        for (int columnIndex = 0; columnIndex < rowLength; ++columnIndex)
        {
            row.Cells.Add(new DataGridViewTextBoxCell()
            {
                Value = myGridData[rowIndex, columnIndex]
            });
        }

        dgv.Rows.Add(row);
    }
}

如果感觉更好,可以将内部循环修改为:

for (int taken = 0; taken < 7 && rowIndex < rowCount - 1; ++taken, ++rowIndex)

但老实说,它仍将执行相同的操作,并为每次迭代创建一个附加的逻辑检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM