簡體   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