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