C# 有关Windows窗体中选项卡的帮助

C# 有关Windows窗体中选项卡的帮助,c#,winforms,tabcontrol,C#,Winforms,Tabcontrol,我目前正在从事一个小型的辅助项目,以适应VisualStudio2012中的表单,因为我通常只使用控制台应用程序。我当前的布局设计为使用选项卡,用户需要指定此应用程序需要多少选项卡。然后,他们填写一些信息,这些信息将被格式化并输出到用户指定位置的文件中。继续回答问题 为了停止现有选项卡中的重复选项卡,我使用以下方法: private void comboTabs_SelectedIndexChanged(object sender, EventArgs e) { if (comboSki

我目前正在从事一个小型的辅助项目,以适应VisualStudio2012中的表单,因为我通常只使用控制台应用程序。我当前的布局设计为使用选项卡,用户需要指定此应用程序需要多少选项卡。然后,他们填写一些信息,这些信息将被格式化并输出到用户指定位置的文件中。继续回答问题

为了停止现有选项卡中的重复选项卡,我使用以下方法:

private void comboTabs_SelectedIndexChanged(object sender, EventArgs e)
{
    if (comboSkills.SelectedIndex == 0)
    {
        tabControl1.TabPages.Remove(tab8);
        tabControl1.TabPages.Remove(tab7);
        tabControl1.TabPages.Remove(tab6);
        tabControl1.TabPages.Remove(tab5);
        tabControl1.TabPages.Remove(tab4);
    }
    //repeat for Index 1, 2 and so on
}
始终至少有3个选项卡,因此组合框上的第一个选择将删除选项卡4到8。下一个选择将执行相同的操作,但随后再次添加tab4。以下选项将继续执行此操作。我有什么办法可以更方便地做这件事吗

第二个问题,每个选项卡都有一系列文本框和组合框,用户可以从中选择信息。我遇到的问题是,我需要确定用户选择了多少个选项卡,然后只从这些选项卡中提取信息。我知道我可以通过以下方式获得选项卡的数量:

int numberoftabs = tabControl1.TabCount;
但在那之后,我似乎无法从他们那里读到信息。我打算这样做

for (int i = 0; i < numberoftabs; i++)
{
    //get textbox text of tab i and so on            
}
for(int i=0;i

我有什么办法可以做到这一点吗?我希望使用选项卡布局,因为我非常喜欢当前的布局。如果有区别,则所有选项卡都具有相同的布局,并共享命名约定,例如选项卡1文本框1为textTab1Name,选项卡2文本框2为textTab2Name等等。

对于问题的第一部分,您可以使用以下代码处理所有情况:

var tabCount = 5 - comboBox1.SelectedIndex;

for (var i = 0; i < tabCount; i++)
{
    tabControl1.TabPages.RemoveAt(7-i);
}
var tabCount=5-comboBox1.SelectedIndex;
对于(变量i=0;i
对于第二部分,您必须创建此方法:

private T GetControl<T>(string name) where T : Control
{
   return (T) this.Controls.Find(name, true).FirstOrDefault();
}
private T GetControl(字符串名称),其中T:Control
{
返回(T)this.Controls.Find(name,true.FirstOrDefault();
}
然后,您可以这样编写文本检索循环:

for (int i = 0; i < numberoftabs; i++)  
{
    //get textbox text of tab i and so on            
    TextBox textBox1 = GetControl<TextBox>("textTab" + i + "Name");
    ...
    etc..
}
for(int i=0;i<代码>您使用Web窗体,还是WPF窗体?只是一个小的旁注:如果您想保持最新的忽略Windows窗体:考虑WPF或新的地铁风格问题。代码中使用8是有原因的还是只是一个示例?你的意思是当comboSkills.SelectedIndex==1时,你的制表符从1到4,当它为2时,你的制表符从1到5,依此类推?是否有理由删除所有内容,然后再次添加tab4,而不是仅删除5到8的选项卡?关于问题的第二部分,您想做什么?您只是想获取选项卡中包含的控件,还是想根据您的约定设置它们的名称,或者其他什么?非常感谢您的快速回答!“投票需要15个声誉”不幸的是,我是一个新注册的用户。一旦我能回来,我一定会回来+1:)