You have 2 places where this will occur. In your AddColumn.AddCol method, and your AddRow.AddColumn method - and both for the same reason. Lets just look at the AddColumn.AddCol method:
public void AddCol(Columns AddCol)
{
mCurrentColumn2 = new AddColumn();
mCurrentColumn2.AddCol(AddCol);
rCol1.Add(mCurrentColumn2);
}
First line creates a new AddColumn.
2nd Line then calls AddCol which then
First line creates a new AddColumn
2nd Line then calls AddCol which then
First line creates a new AddColumn
and so on - until the stack fills up with too many calls, and the error is generated. The AddRow.AddColumn method does exactly the same thing.