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] }); }