2012-02-03 5 views
1

Я ищу решение для своей проблемы. Я хочу изменить расположение TabButtons tabcontrol или добавить элемент управления, назначенный для вкладки, но вне TabControl. TabPages добавляется динамически. Пример:TabControl кнопки кнопок расположение

Form1___________ _ [] X 

_______________________ 

Some TabPage content 

Tab1 | Tab2 | Tab3 | < > 

TextBox assigned to Tab's 
________________________ 

Так что, если я изменить вкладки, нажав на Tab1, Tab2, Tab3 TabPage + содержание TextBox должно меняться в зависимости от вкладки. Первая идея заключалась в том, чтобы поместить TabButtons в нижнюю часть и добавить ArrayList, что содержит содержимое TextBox, захватить вкладку вкладки TabControl и изменить содержимое TextBox, но возникла проблема с редактированием и добавлением этого содержимого. В нескольких словах: я не ставил TabButtons между двумя элементами управления (например, между двумя текстовыми полями). У вас есть идеи?

+0

Действительно странная идея! –

+0

Трудно сказать, чего вы хотите. Можете ли вы указать на существующий веб-сайт, который делает что-то вроде этого? – egrunin

+0

О, я забыл упомянуть, это приложение для Windows – user1112008

ответ

1

Если я понимаю, что вы просите ... Вы хотите, чтобы при нажатии на вкладку, она контролирует две разные вещи? Как два разных текстовых поля? Если это так, вы должны сделать это так.

foreach (thing in your ArrayList) 
{ 
    TabPage tabPage = new TabPage("Name of tab");   // Add a new tab page 
    RichTextBox rtb = new System.Windows.Forms.RichTextBox();//RTF box 
    TextBox tb = new System.Windows.Forms.TextBox();   //Text box 

    //Set up size, position and properties 
    rtb.LoadFile("some/Path/to/a/file"); 

    //set up size, position of properties 
    tb.Text = "Some text I want to display"; 

    tabPage.Controls.Add(rtb); //Add both boxes to that tab 
    tabPage.Controls.Add(tb); 

    tabControl1.TabPages.Add(tabPage); //Add that page to the tab control 
} 

Единственное, с чем вам придется столкнуться, - это макет. И обязательно добавьте tabControl с дизайнером.

+0

Почти все, что я имею в виду, но кнопки переключения вкладок должны находиться между текстовыми полями Thoses. – user1112008

+0

Вы должны иметь возможность изменить позицию со свойствами. http://stackoverflow.com/questions/2726124/how-to-change-tabpage-position-in-c-net Это может помочь – Dave

1

вы можете создать свой собственный класс текстового поля, который наследуется от класса текстового поля:

class MyOwnTextBox:TextBox 
{ 
    public int parent_tab; 
} 

Таким образом, вы можете добавить свое текстовое поле, назначая parent_tab идентификатор для них. поэтому в событии нажатия кнопки табуляции вы можете сделать что-то вроде этого:

foreach(MyOwnTextBox txt in this.Controls) 
{ 
    if(txt.parent_tab==1) txt.visible=false; 
} 
+2

спасибо, но поместите это в «комментарий», а не «ответ» – egrunin

+0

что-то мне очень приятно, нет кнопки добавления комментариев в сообщении выше для меня! – sap

+0

Да, я хочу контролировать один элемент управления (TextBox), который находится вне элемента управления TabControl, или найти другой способ поместить TabButtons между элементами управления. – user1112008

0

Я не уверен, что я точно понимаю, что вы пытаетесь сделать. Если вы хотите изменить вкладку от другого объекта, просто используйте:

TabController.SelectTab(0); 

Если вы хотите удалить TabPage и добавить его к другому, используйте:

TabController.Controls.Remove(TabPage1); 
TabController2.Controls.Add(TabPage1); 

Edit: Из дальнейшего чтения, я думаю, что вы хотите что-то вроде этого:

this.TabController.ControlAdded += AddLinksToBottomOfTabs; 
public void mainSettingsTabController_ControlAdded(object sender, ControlEventArgs e) 
{ 
    //Create label with e.Control.Name as the title and 
    //add it to wherever you want it added. 
} 
0

Вы также можете поместить вкладки слева или справа от элемента управления вкладкой. Это не идеально, но приблизиться к вашей идее, чем размещать их выше или ниже элемента управления вкладкой.

Вы можете добавить новую закладку динамически как этот

tabControl1.TabPages.Add("My new Tab"); 
Смежные вопросы