У элемента управления может быть только один родительский элемент - если вы добавляете элемент управления, у которого уже есть родительский элемент к другому элементу управления, он сначала удаляется сам.
Из документов на ControlCollection.Add
:
Элемент управления может быть назначен только одному элементу Control.ControlCollection одновременно. Если элемент управления уже является дочерним элементом другого элемента управления, он удаляется из этого элемента управления до его добавления в другой элемент управления.
Если подумать, это имеет смысл - панель должна знать, где она, насколько она велика и т. Д. Она действительно может быть логически только в одном месте за раз.
Кроме того, я бы рекомендовал использовать приведение, а не as
, когда вы продолжаете безоговорочно, как если бы приведение в действие сработало - таким образом, если соответствующий объект не является из Правильный тип, вы получаете исключение в самый ранний момент обнаружения, вместо ссылки null
, распространяющейся по вашей системе и, возможно, не обнаруживаемой в течение длительного времени (что затрудняет диагностику проблемы и введение возможности потери данных).