Afficher le tableau 2d dans DataGridView

J’ai un tableau 2D. Je veux imprimer le tableau dans mon DataGridView mais cela jette une erreur:

[L’argument OutOfRangeException n’a pas été géré]

C’est mon code

 for (int j = 0; j < height; j++) { for (int i = 0; i < width; i++) { dataGridView1[i, j].Value = state[i, j].h; //state[i, j].h this is my array dataGridView1[i, j].Style.BackColor pixelcolor[i,j]; dataGridView1[i, j].Style.ForeColor = Color.Gold; } } 

Comme les commentaires l’ont souligné, vous devez vous concentrer sur les lignes et les cellules. Vous devez créer vos colonnes DataGridView , puis remplir chaque cellule de ligne par cellule.

La width de votre tableau doit correspondre à vos colonnes dgv et la height aux lignes de dgv. Prenons ce qui suit comme exemple simple:

 ssortingng[,] twoD = new ssortingng[,] { {"row 0 col 0", "row 0 col 1", "row 0 col 2"}, {"row 1 col 0", "row 1 col 1", "row 1 col 2"}, {"row 2 col 0", "row 2 col 1", "row 2 col 2"}, {"row 3 col 0", "row 3 col 1", "row 3 col 2"}, }; int height = twoD.GetLength(0); int width = twoD.GetLength(1); this.dataGridView1.ColumnCount = width; for (int r = 0; r < height; r++) { DataGridViewRow row = new DataGridViewRow(); row.CreateCells(this.dataGridView1); for (int c = 0; c < width; c++) { row.Cells[c].Value = twoD[r, c]; } this.dataGridView1.Rows.Add(row); } 

Le premier problème potentiel concerne la façon dont vous accédez à vos index de tableau. Ce qui peut être traité de cette façon.

  ssortingng[,] a = { {"0", "1", "2"}, {"0", "1", "2"}, {"0", "1", "2"}, {"0", "1", "2"}, }; for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < a.GetLength(1); j++) { Console.WriteLine(a[i,j]); } } 

Vérifiez simplement la longueur de votre dimension de tableau en premier. Clairement, l’une de vos variables, hauteur ou largeur, est incorrecte.

Ceci est fait en utilisant Array.GetLength(int dimension)

Le deuxième problème est la façon dont vous ajoutez des éléments à votre datagridview.

par exemple pour 2 éléments

 dataGridView1.ColumnCount = 2; var dataArray = new int[] { 3, 4, 4, 5, 6, 7, 8 }; for (int i = 0; i < dataArray.Count; i++) { dataGridView1.Rows.Add(new object[] { i, dataArray[i] }); }