以编程方式在TabControl中创建选项卡。

3

我有一个表单,其中包含一个选项卡控件,我想根据用户在前一个表单上的输入进行修改。我创建了一个名为“TabControl”的选项卡控件(很有创意,我知道),并尝试为数组“tabNames()”的每个值添加一个选项卡。当我调试程序时,我在第一个表单中将值输入到数组中,当第二个表单加载时,我的选项卡控件中什么也没有显示。有什么想法吗?

Public Sub frmContent_Load(ByVal sender As Object, ByVal e As EventArgs)
  lblTitle.Text = frmiFormCreator.txtTitle.Text
  For i As Integer = 0 To frmiFormCreator.numberOfTabs
    Dim tabPage(frmiFormCreator.numberOfTabs) As TabPage
    tabPage(i).Text = frmiFormCreator.tabNames(i)
    TabControl.TabPages.Add(tabPage(i))
  Next
End Sub
2个回答

6
尝试创建TabPage对象:
For i As Integer = 0 To frmiFormCreator.numberOfTabs
  Dim newPage As New TabPage()
  newPage.Text = frmiFormCreator.tabNames(i)
  TabControl.TabPages.Add(newPage)
Next

此外,您的代码似乎会多创建一个选项卡。也许您想要这样做:
For i As Integer = 0 To frmiFormCreator.numberOfTabs - 1

1
非常感谢您的帮助。这是我遇到的问题之一。事实证明,我没有正确声明表单加载函数,它甚至没有触发。至于numberOfTabs - 1,我实际上在numberOfTabs变量的声明中进行了减1操作。我很乐意给这个答案和Nianios的答案点赞,但不幸的是,我是这个网站的新手,没有所需的声望。再次感谢你们两个的帮助! - nherrmann
好的,我现在有足够的声望来投票了,所以我回来并在两个建议上进行了投票,因为它们都很有帮助。谢谢大家! - nherrmann
@nherrmann,与其订阅表单事件,通常更容易的方法是重写 OnLoad 方法。只需确保让 MyBase.OnLoad(e) 行发挥作用即可。 - LarsTech

1
尝试
Public Sub frmContent_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)  
    lblTitle.Text = frmiFormCreator.txtTitle.Text
    For i As Integer = 0 To frmiFormCreator.numberOfTabs
        Dim tabPage As New TabPage(frmiFormCreator.tabNames(i))
        TabControl.TabPages.Add(tabPage)
    Next
End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接