在C#中向TabControl选项卡添加按钮

时间:2011-11-29 10:24:59

标签: c# button tabcontrol

我在Windows窗体中有一个TabControl。我务实地添加了这样的新标签:

for (int i = 1; i < numOfLanguages; i++)
{
     // add a tab for each language
     string tabTitle = split[i];
     TabPage newTab = new TabPage(tabTitle);
     languageTabs.TabPages.Add(newTab);
}

在循环内我想为每个标签设置其他控件。主要是我想添加按钮。我见过这段代码:

tabPage1.Controls.Add(new Button());

根据这个例子,我想做类似的事情:

languageTabs.SelectTab(split[i]).Add(new Button());

我知道这段代码不会起作用。一直在查看参数并且看不到任何可以让我做这种事情的东西。

任何想法社区?

2 个答案:

答案 0 :(得分:3)

SelectTab将实际的TabControl移动到指定的标签页,它不会返回标签以让您操作它。


您可以按如下方式索引标签页:

languageTabs.TabPages[2].Controls.Add(new Button());

如果您在创建TabPage时设置了Name属性,那么您还可以按键找到各个标签:

for (int i = 1; i < numOfLanguages; i++)
{
     // add a tab for each language
     string tabTitle = split[i];
     TabPage newTab = new TabPage(tabTitle);
     newTab.Name = tabTitle;
     languageTabs.TabPages.Add(newTab);
}

...

languageTabs.TabPages[split[i]].Controls.Add(new Button());

See MSDN了解更多)

无论哪个最方便。

答案 1 :(得分:0)

LINQ?

languageTabs.TabPages.First(tab => tab.Title == split[i]).Add(new Button());

如果您的tabcontrol没有具有特定名称的标签,这可能不可靠(崩溃),因此您可能需要更可靠的方式:

if (languageTabs.TabPages.Exists(tab => tab.Title == split[i]))
{
    languageTabs.TabPages.First(tab => tab.Title == split[i]).Add(new Button());
}