Correct the loop for j:
for (int j = 0; j < Convert.ToInt32(textBox2.Text); j++)
And this causes error too:
if (i > 2)
{
btn[i, j].Left = 100 + btn[i-1, j-1].Left;
btn[i, j].Top = 100 + btn[i-1, j-1].Top;
}
Use this one instead:
btn[i, j].Left = (i > 0)? 100 + btn[i - 1, j].Left : 100;
btn[i, j].Top = (j > 0)? 100 + btn[i, j - 1].Top : 100;