【发布时间】:2013-02-06 09:34:43
【问题描述】:
我目前正在从事一个小型项目,以适应 Visual Studio 2012 中的表单,因为我通常只使用控制台应用程序。我当前的布局设计为使用选项卡,用户将指定他们需要多少个选项卡用于此应用程序。然后他们填写一些信息,并将其格式化并输出到用户指定位置的文件中。关于问题。
为了阻止现有的重复选项卡,我使用以下方法:
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。下一个选项会执行相同的操作,但会再次添加选项卡 4。这将继续进行以下选择。有什么方法可以让我更方便地做到这一点?
第二个问题,每个选项卡都有一系列文本框和组合框,用户可以从中选择信息。我遇到的问题是我需要确定用户选择了多少个选项卡,然后只从这些选项卡中提取信息。我知道我可以通过以下方式获取标签数量:
int numberoftabs = tabControl1.TabCount;
但在那之后我似乎无法从他们那里读取信息。我打算这样做
for (int i = 0; i < numberoftabs; i++)
{
//get textbox text of tab i and so on
}
有什么办法可以做到吗?我希望使用选项卡布局,因为我非常喜欢我当前的布局。如果有区别,所有选项卡都具有相同的布局,并且共享一个命名约定,例如选项卡 1 文本框 1 是 textTab1Name,选项卡 2 文本框 2 是 textTab2Name 等等。
【问题讨论】:
-
您使用的是 Web 表单还是 WPF 表单?
-
只是一个小提示:如果您想保持最新状态,请忽略 Windows 窗体:考虑 WPF 或新的 Metro 风格
-
一些问题。您的代码中有 8 的原因还是只是一个示例?你的意思是当 comboSkills.SelectedIndex == 1 时你会得到 1 到 4 的标签,当它是 2 时你有 1 到 5 的标签等等?是否有理由删除所有内容,然后再次添加 tab4 而不是仅删除从 5 到 8 的选项卡?
-
关于你问题的第二部分,你想做什么?您只是想获取选项卡中包含的控件,还是想根据您的约定设置它们的名称,或者其他什么?
标签: c# winforms tabcontrol