Вам необходимо создать класс, который определяет тип объекта, из которого состоит коллекция. ListView имеет объекты ListViewItem. TabControl имеет объекты TabPage. Ваш контроль имеет объекты, которые определены вами. Давайте назовем это MyItemType.
Вам также нужен класс-обёртка для коллекции. Простая реализация показана ниже.
public class MyItemTypeCollection : CollectionBase
{
public MyItemType this[int Index]
{
get
{
return (MyItemType)List[Index];
}
}
public bool Contains(MyItemType itemType)
{
return List.Contains(itemType);
}
public int Add(MyItemType itemType)
{
return List.Add(itemType);
}
public void Remove(MyItemType itemType)
{
List.Remove(itemType);
}
public void Insert(int index, MyItemType itemType)
{
List.Insert(index, itemType);
}
public int IndexOf(MyItemType itemType)
{
return List.IndexOf(itemType);
}
}
Наконец, вам нужно добавить переменную-член для коллекции в свой пользовательский элемент управления и правильно ее оформить:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public MyItemTypeCollection MyItemTypes
{
get { return _myItemTypeCollection; }
}
и теперь у вас есть простой интерфейс, который позволяет просматривать и редактировать коллекцию. Оставляет желать лучшего, но чтобы сделать больше, вам нужно узнать о пользовательских дизайнерах, которые могут быть трудны для понимания и реализации.