可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have a 2D array. I want to print the array in my DataGridView
but it throws an error:
[Argument OutOfRangeException was unhandled ]
This is my 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; } }
回答1:
As comments have pointed out, you should focus on rows and cells. You need to build your DataGridView
columns and then populate each row cell by cell.
The width
of your array should correspond to your dgv columns and the height
to the dgv rows. Take the following as a simple example:
string[,] twoD = new string[,] { {"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); }
回答2:
The first potential problem is with how you are accessing your array indexes. Which can be handled this way.
string[,] 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]); } }
Just check your array dimension length first. Clearly one of your variables height or width is incorrect.
This is done using Array.GetLength(int dimension)
The second problem is how you are adding items to your datagridview.
回答3:
for exemple for 2 elements
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] }); }