【问题标题】:Programmatically create tabs in TabControl以编程方式在 TabControl 中创建选项卡
【发布时间】:2013-03-20 15:39:30
【问题描述】:

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

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

【问题讨论】:

    标签: vb.net winforms tabcontrol


    【解决方案1】:

    尝试创建 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
    

    【讨论】:

    • 非常感谢您的帮助。这是我遇到的问题之一。事实证明,我没有正确声明我的表单加载函数,甚至没有触发。至于 numberOfTabs - 1,我实际上是在 numberOfTabs 变量的声明中将它减去 1。我很乐意支持这个答案以及 Nianios 的答案,但不幸的是,我是该网站的新手,没有所需的声誉。感谢两位的帮助!
    • 好的,我现在有足够的声望来投票,所以我回来了,对这两个建议都这样做了,因为它们都很有帮助。谢谢大家!
    • @nherrmann 与订阅表单事件不同,覆盖OnLoad 方法通常更容易。只要确保让MyBase.OnLoad(e) 行做它的事情。
    【解决方案2】:

    试试

    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
    

    【讨论】:

      猜你喜欢
      • 2011-09-01
      • 2015-01-14
      • 2020-12-03
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      相关资源
      最近更新 更多