У меня есть UserControl
иерархия, которая выглядит примерно так:
public class BaseClass : UserControl
{
protected Label[] Labels;
public BaseClass(int num)
{
Labels = new Label[num];
for(int i=0; i<num; i++)
{
Labels[i] = new Label();
}
}
}
И в другом файле:
public class DerivedClass : BaseClass
{
public DerivedClass() : base(2)
{
// Do stuff to the location, size, font, text of Labels
}
}
Эта структура разработана таким образом, что базовый класс обрабатывает базовую логику, а производный класс обрабатывает логику отображения. Количество меток должно быть переменным (разные производные классы будут иметь разные числовые значения).
Моя проблема заключается в том, что я хотел бы, чтобы представление дизайнера отображало пользовательский элемент управления так, как он будет выглядеть после настройки отображения. Есть несколько проблем: во-первых, если в BaseClass отсутствует конструктор по умолчанию, то представление конструктора DerivedClass просто не работает. Даже если я добавлю конструктор по умолчанию, представление конструктора показывает макет DerivedClass без различных изменений отображения.
Меня не интересует использование представления конструктора для изменения элементов управления. Я не против этого, но тот факт, что метки находятся в массиве, кажется, не позволяет представлению дизайнера получить к ним доступ. Меня просто интересует возможность увидеть эффекты моего кода макета дисплея в DerivedClass.