您可以尝试从 Component 继承来获得该功能。
在此示例中,我创建了一个名为 的类PanelItem
,它将是我自己的 Panel 类在我的集合中使用的类。我添加DesignTimeVisible(false)
以便它不会填充设计器中的组件托盘。
另外,我添加了一个Name
对设计器隐藏但可以在代码中使用的属性。它似乎在我的测试中起作用:
[DesignTimeVisible(false)]
public class PanelItem : Component {
[DefaultValue(typeof(string), "")]
public string PanelText { get; set; }
private string name = string.Empty;
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public string Name {
get {
if (base.Site != null) {
name = base.Site.Name;
}
return name;
}
set {
name = value;
}
}
}
然后是我的自定义面板控件:
public class MyPanel : Panel {
private List<PanelItem> panelItems = new List<PanelItem>();
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public List<PanelItem> PanelItems {
get { return panelItems; }
}
}
结果: