TabPage中的TabControl

时间:2014-02-01 15:53:20

标签: vb.net tabcontrol tabpage

我遇到了以下问题: 我将动态创建的TabControl添加到标签页(也是动态创建的)。当我尝试使用另一个tabcontrol添加另一个标签页时,它就像没有新的TabControl添加到新的TabPage一样。事实上,它没有添加任何东西。我该怎么办?这是我创建TabPage

的代码
    Dim tbstate As New TabPage
    tbstate.ContextMenuStrip = QuestEd.cmsState
    tbstate.Text = String.Format("State: {0}", txtState.Text)
    QuestEd.TabControl1.TabPages.Add(tbstate)
    txtState.Text = Nothing
    tbstate.Select()
    QuestEd.RefreshData()
    Me.Dispose()

以下是我为此TabControl

创建新TabPage的代码
Public newtab As New TabControl
     ...
            If QuestEd.TabControl1.SelectedTab.Controls.Count = 0 Then
                newtab.Parent = QuestEd.TabControl1.SelectedTab
                newtab.Dock = DockStyle.Fill
                QuestEd.TabControl1.SelectedTab.Controls.Add(newtab)
                QuestEd.TabControl1.SelectedTab.Refresh()
                newtab.TabPages.Add(String.Format("When: {0}", typ))
            Else
                newtab.TabPages.Add(String.Format("When: {0}", typ))
            End If

我做错了什么?有人可以建议我如何解决它吗?提前致谢

1 个答案:

答案 0 :(得分:2)

快速测试您的代码。我猜测,因为你在newtab上有公共可见性,你在类级别声明它。您的代码确实有效,它会在TabPage上添加一个新的TabControl。在阅读Hans的评论时,他很可能对正在发生的事情是正确的,如果您使用的是Form的类名而不是Instance Name,那么您将看不到任何内容。如果您尝试从其他表单添加这些控件,则需要传入要添加到其中的表单的实例。如果没有看到你的项目结构如何,这只是一个疯狂的猜测。

我的例子:

Public Class Form1
    Dim newtab As New TabControl
    Dim typ As String = "Hello"
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim tbstate As New TabPage
        Dim tbstate1 As New TabPage
        tbstate.Text = String.Format("State: {0}", "My Test")
        TabControl1.TabPages.Add(tbstate)
        TabControl1.TabPages.Add(tbstate1)
        tbstate.Select()

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        If TabControl1.SelectedTab.Controls.Count = 0 Then
            newtab = New TabControl
            newtab.Parent = TabControl1.SelectedTab
            newtab.Dock = DockStyle.Fill
            TabControl1.SelectedTab.Controls.Add(newtab)
            TabControl1.SelectedTab.Refresh()
            newtab.TabPages.Add(String.Format("When: {0}", typ))
        Else
            DirectCast(TabControl1.SelectedTab.Controls(0), TabControl).TabPages.Add(New TabPage(String.Format("When: {0}", typ)))            End If
    End Sub
End Class