2010-03-24 7 views
5

Я создаю небольшую вкладку C# Form, и я бы хотел, чтобы каждая закладка имела некоторые общие функции, в частности, кнопку OK и сообщение об ошибке, а также пространство для конкретной поля формы.Создание настраиваемого элемента управления TabPage в C#

Кто-нибудь еще сделал что-то подобное и как вы к нему подошли?

+0

Кнопка OK на каждой странице? –

+1

Не правильно ответ, но я думаю, что я сделаю некоторый тест, расширяющий исходную tabcontrolpage, добавив общие функции, которые вам нужны. – michele

ответ

7

Это легко сделать без расширения TabControl/TabPage.

Определите один UserControl и поместите на него все элементы, которые вы хотите на каждой вкладке.

В форме: перейдите и создайте специальные элементы 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 и TextBox для сообщения об ошибке помещается за отдельными элементами управления, назначенными каждой вкладке.

+1

Те из вас, кто проголосовал: понимая, почему не нравится это решение, будет очень признателен. спасибо, – BillW

+0

@BillW На самом деле, какая-то задница отметила это как спам. Теперь, я не знаю, является ли это хорошим ответом, но я знаю, что это не спам. Итак, +1, чтобы помочь компенсировать потерю репутации и нейтрализовать рейтинг вашего ответа. –

+0

Hi BillW, Мне нравится это решение. Я знаю, что это означает, что я теряю дизайнерскую поддержку с точки зрения «видения» элемента управления, но я думаю, что это делает работу красиво, спасибо. –

2

Несколько идей:

  • Keep общие элементы управления за пределами tabpanel;
  • Расширение TabPage/TabControl
  • Создайте базовый UserControl с общими кнопками и сделайте usercontrols, которые наследуют его. Затем поместите один унаследованный usercontrol на TabPage.
Смежные вопросы