Я создаю маленькую снабженную вкладками Форму c#, и я хотел бы, чтобы каждая вкладка имела некоторые типичные функции, особенно, кнопку OK и сообщение об ошибке и имела пространство для определенных полей формы.
Кто-либо еще сделал что-то подобное и как Вы приближались к нему?
Это легко сделать, не расширяя TabControl / TabPage.
Определите один UserControl и поместите в него нужные общие элементы на каждой TabPage.
В форме: продолжайте и создайте необходимые элементы управления TabPage для каждой страницы TabPage: убедитесь, что они не будут визуально перекрываться с общими элементами управления после добавления UserControl.
В событии загрузки формы вашей основной формы сделайте что-то вроде этого:
// form scoped variable to hold a referece to the current UserControl
private UserControl1 currentUserControl;
private void Form1_Load(object sender, EventArgs e)
{
foreach(TabPage theTabPage in tabControl1.TabPages)
{
currentUserControl = new UserControl1();
theTabPage.Margin = new Padding(0);
theTabPage.Padding = new Padding(0);
theTabPage.Controls.Add(currentUserControl);
currentUserControl.Location = new Point(0,0);
currentUserControl.Dock = DockStyle.Fill;
currentUserControl.SendToBack();
}
}
Несмотря на то, что SendToBack здесь действительно не требуется, это «страховка», что ваш UserControl с кнопкой «Okay» и текстовым полем для сообщения об ошибке расположены за отдельными элементами управления, которые вы назначили каждой TabPage.
Несколько идей: