在声明时初始化tabpage数组

时间:2016-05-19 20:07:21

标签: c# winforms

我有一个带有多个标签的窗体。我希望有一个类型" TabPage"这将保留每个选项卡,我想在声明时初始化它。我已经尝试了

TabPage[] tabs = {Tab1, Tab2};
TabPage[] tabs = new TabPage[]{Tab1, Tab2};
TabPage[] tabs = new TabPage[2]{Tab1, Tab2};

但它都不起作用。

此外,我尝试迭代选项卡控件中的每个选项卡,以某种方式将它们添加到数组中,但似乎没有" ToArray()" " Tab_Control.TabPages"中的方法集合和制表符数组没有" AddRange"方法

如何在数组声明中初始化标签页,如何将它们添加到数组post声明中?

2 个答案:

答案 0 :(得分:2)

TabPageCollection已经是IList和IEnumerable。应该就够了。

如果您需要简单的数组语法,可以试试这个:

var tabs = new[] {tabPage1, tabPage2};

答案 1 :(得分:1)

  

似乎没有" ToArray()" " Tab_Control.TabPages"中的方法   集合。

要从标签控件中获取一系列标签页,您可以使用:

var pages = tabControl1.TabPages.Cast<TabPage>().ToArray();

您还可以使用ToList()方法返回List<TabPage>,它比数组更灵活。
另请注意,您应该在InitializeComponents之后或以Load形式编写此代码。

您不能以这种方式在表单级别初始化tabs字段:

TabPage[] tabs = new TabPage[] { tabPage1, tabPage2 };

您将收到编译器错误:

  

字段初始值设定项不能引用非静态字段,方法或   property&#39; tabPage1&#39;

但是你可以在表单级别TabPage[] tabs定义数组字段,然后在Form Load中或在InitializeComponents之后的构造函数中定义值,为数组赋值:

tabs = new TabPage[] { tabPage1, tabPage2 };