[英]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.