Маркус писал: «если другой элемент управления перетащен на мой пользовательский элемент управления в режиме разработки (или добавлен программно во время выполнения), я хочу, чтобы этот элемент управления был размещен на одной из панелей».
Я собираюсь истолковать вышесказанное как означающее, что вы хотите перетаскиваемый элемент времени разработки, чтобы стать дочерним элементом управления одной из двух внутренних панелей вашего UserControl: если это истолкование неверно: не обращайте внимания на следующее:)
Кроме того, просто чтобы избежать путаницы: вы абсолютно правы, когда наблюдаете, что Панели или другие «контейнерные» элементы управления в экземпляре UserControl, помещенном в форму во время разработки, не «потребляют» или «глотают» "перетащил элементы управления, как вы могли ожидать: на самом деле вы не можете даже выбрать их по отдельности: они добавляются в ControlCollection UserControl.
К счастью для вас, в случае перетаскивания во время разработки есть хороший пример твердого кода, который вы можете изучить и использовать в CodeProject от Генри Минута: Проектирование вложенных элементов управления : эта статья покажет вам, как наследовать от ParentControlDesigner, чтобы дочерние элементы управления , которые являются контейнерами UserControl во время разработки, могли функционировать как контейнеры так, как вы ищете.
В случае, если вы хотите, чтобы потребитель вашего элемента управления во время выполнения (программист) ... предполагал, что у них нет источника, поэтому они взаимодействуют с вашим UserControl как «черный ящик», способный «видеть» только Свойства и Методы, доступные События и т. д., которые вы сделали Публичными ... для управления размещением добавленного элемента управления: вам нужно принять решение о том, как вы хотите, чтобы потребитель получал доступ к панелям. Вы можете выставить их «напрямую» как объекты через публичные свойства UserControl, или вы можете выставить только публичный метод для добавления элементов управления для каждой панели.