Условие в вашем цикле for не имеет смысла. С массивом из трех элементов он запускается только два раза. Из-за этого третий элемент в вашем массиве (tc[2]
) - null
, потому что он никогда не получает присвоенное ему значение. То же самое касается вашего второго цикла.
Используйте это вместо:
for (int p = 0; p < tc.Length; p++)
Кстати: последняя строка вашего примера выдаст исключение:
setTableRow(tc[2], tc[3], tr[1]);
tc[3]
- четвертый элемент в массиве из трех элементов. Это приведет к IndexOutOfRangeException
.
UPDATE:
После того, как вы разместили свой полный код, я могу сказать следующее:
Следующие строки вызывают IndexOutOfRangeException
:
tc[9].Text = Convert.ToString(goalItem["Deadline"]);
setTableRow(tc[8], tc[9], tr[4]);
Вы создали массив из 9 элементов, то есть с индексами от 0 до 8 . tc[9]
пытается получить доступ к 10-му элементу в массиве из 9! Чтобы решить эту проблему, увеличьте размер вашего массива до 10:
TableCell[] tc = new TableCell[10];
Кроме того, у вас такая же проблема с вашим массивом TableRow
, поэтому вы должны также увеличить его размер:
TableRow[] tr = new TableRow[5];