我正在为我的问题寻找解决方案。我想更改tabcontrol的TabButtons的位置或添加分配给tabpage但在TabControl外部的控件。 TabPages是动态添加的。例如:
Form1___________ _ [] X
_______________________
Some TabPage content
Tab1 | Tab2 | Tab3 | < >
TextBox assigned to Tab's
________________________
因此,如果我通过点击Tab1
更改标签,Tab2
,Tab3
TabPage + TextBox内容应根据标签更改。第一个想法是将TabButtons放在底部并添加包含TextBox内容的ArrayList,捕获TabControl更改选项卡事件并更改TextBox内容,但是编辑和添加该内容时出现问题。简而言之:我不想把TabButtons放在两个控件之间(例如两个文本框之间)。你有什么想法吗?
答案 0 :(得分:1)
您可以创建自己的文本框类,该类继承自textbox类:
class MyOwnTextBox:TextBox
{
public int parent_tab;
}
因此,您可以通过为其分配parent_tab标识来添加文本框。所以在标签按钮点击事件中,您可以执行以下操作:
foreach(MyOwnTextBox txt in this.Controls)
{
if(txt.parent_tab==1) txt.visible=false;
}
答案 1 :(得分: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添加到设计器中。
答案 2 :(得分:0)
我不确定我到底知道你要做什么。如果要从其他对象更改选项卡,只需使用:
TabController.SelectTab(0);
如果要删除TabPage并将其添加到另一个,请使用:
TabController.Controls.Remove(TabPage1);
TabController2.Controls.Add(TabPage1);
编辑:从进一步阅读,我认为你想要这样的东西:
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.
}
答案 3 :(得分:0)
您也可以将标签放在标签控件的左侧或右侧。这并不完美,但是比将它们放在标签控件的上方或下方更接近您的想法。
您可以像这样动态添加新的标签页
tabControl1.TabPages.Add("My new Tab");