Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从单个二维数组填充多个DataGridView_C#_Arrays_Datagridview - Fatal编程技术网

C# 从单个二维数组填充多个DataGridView

C# 从单个二维数组填充多个DataGridView,c#,arrays,datagridview,C#,Arrays,Datagridview,我最近发布了一个关于如何用7个DataGridView中的数据填充二维数组的问题, 每个都有7行x 5列。 Enigmativity为我提供了一段非常有效的代码,非常感谢 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

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

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();
    }
  }
}
publicstring[,]myGridData=新字符串[50,5];
//49数据行,最后一行(50)包含版本号
var dgvs=new[]{dgv6,dgv5,dgv4,dgv3,dgv2,dgv1,dgv0,};
对于(变量i=0;i
我现在需要一种方法来反转该过程并从原始数组填充7个DataGridView

我知道如何从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);
}
//填充单个DataViewGrid
var rowCount=myGridData.GetLength(0);
var rowLength=myGridData.GetLength(1);
dgv1.ColumnCount=5;
对于(int rowIndex=0;rowIndex

提前感谢。

就像填充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);
    }
}
var rowCount=myGridData.GetLength(0);
var rowLength=myGridData.GetLength(1);
int rowIndex=0;
var dgvs=new[]{dgv6,dgv5,dgv4,dgv3,dgv2,dgv1,dgv0,};
对于(int i=0;i
如果这让您感觉更好,您可以将内部循环修改为:

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

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

谢谢Ohbouse,您的代码似乎做得很好!!