Я делаю некоторые элементы управления, которые должны иметь одинаковый внешний вид и общее поведение, хотя они предназначены для разных типов ввода. Поэтому я создал BaseClass, который наследуется от UserControl, а все мои элементы управления наследуются от BaseClass.
Однако, если я добавляю элементы управления для BaseClass в конструктор, например TableLayoutPanel, я не могу получить к ним доступ при разработке унаследованных классов. Я вижу TableLayoutPanel, но, хотя он «защищен», я не могу изменить его или поместить в него элементы управления через конструктор. У меня нет проблем с доступом к нему по коду, но я не хочу потерять возможность использовать конструктор.
Прямо сейчас я просто удалил все элементы управления из BaseClass, добавил макет и все общие элементы управления в каждом унаследованном классе, а затем использовал ссылки для управления ими внутри BaseClass. Но это меня совсем не удовлетворяет. Есть ли способ заставить дизайнера работать с унаследованными защищенными элементами управления?
Среда: C #, .NET 3.5, Visual Studio 2008
РЕДАКТИРОВАТЬ, чтобы ответить на предложение SLaks. Я попытался установить свойство, и, хотя я не привык использовать его, похоже, оно не работает. Вот код, который я попробовал:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public TableLayoutPanel TableLayoutPanel1
{
get { return tableLayoutPanel1;}
set { tableLayoutPanel1 = value;}
}
}
public partial class UserControl2 : UserControl1
{
public UserControl2()
{
InitializeComponent();
}
}