我最近发布了一个关于如何使用来自7个datagridviews的数据填充二维数组的问题, 每个有7行×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();
}
}
}
我现在需要一种方法来反转过程并从原始数组中填充7个datagridviews。
我知道如何从二维数组中填充单个数据网格视图,但不知道如何填充所有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);
}
提前致谢。
答案 0 :(得分:0)
就像填充2d数组一样,您需要遍历7个DataGridView
控件。将代码嵌套在该循环中,然后更改内循环迭代的范围。不是迭代rowCount - 1
,而是用所有49行填充一个DataGridView
,而只迭代接下来的7行。通过将rowIndex
移到最外层循环之外,它将会记住&#34;当您浏览每个视图时,下一个索引。
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)
但老实说,它仍然会执行相同的操作,并为每次迭代创建一个额外的逻辑检查。