Приветствую.
Работаем с TableLayoutPanel. Изначально в ней задана одна строка и два столбца.
С помощью функции:
tableLayoutPanel.Controls.Add(control, column, row);
добавляем контрол в позицию (0, 0).
Затем увеличиваем tableLayoutPanel.RowCount++;
и с помощью той же функции дабавляем контрол в позицию (0, 1).
В результате чего срабатывает событие Control.ControlAdded.
Но по каким-то причинам, если из функции обработчика этого события — tableLayoutPanel_ControlAdded — обратится к tableLayoutPanel, то обнаружим, что последний добавленный контрол находится не в позиции (0, 1), а в позиции (1, 0).
После завершения работы tableLayoutPanel_ControlAdded контрол чудесным образом оказывается в нужной позиции (0, 1).
"Это, какой-то, позор."