Как создать UserControl, в котором вы можете удалить другие элементы управления?

В WinForms, как я могу создать UserControl, когда при вставке в форму я могу добавить другие элементы управления внутрь, перетащив их из панели инструментов так же, как со всеми элементами управления контейнерами (панели, групповые поля и т.д.). )? Я попытался добавить элементы управления, отбросив их в своем элементе управления, но затем, когда я перемещаю свой элемент управления, элементы управления, которые я добавил, остаются там, где они есть, чего бы не произошло, если бы вместо моего контроля я использовал бы Panel (другой элементы управления будут перемещаться вместе с панелью).

Ответы

Ответ 1

В отличие от элемента управления Panel, например, UserControl не действует как элемент управления контейнером, когда он помещается в другую форму. Существует полная поддержка времени разработки, когда вы сами разрабатываете UserControl, но его поведение по умолчанию не позволяет ему выступать в качестве конститутивного элемента управления после того, как оно было помещено в другую форму. Вот почему вы не можете добавить к нему другие элементы управления, перетащив их из панели инструментов.

Чтобы добавить этот тип поведения к UserControl, вам нужно добавить DesignerAttribute в определение вашего пользовательского интерфейса UserControl. Например:

using System.ComponentModel;
using System.ComponentModel.Design;

[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))]
public class MyUserControl : System.Windows.Forms.UserControl
{
    //...your code here
}

(см. статью эту статью в CodeProject.