我遇到了以下问题:
我将动态创建的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
我做错了什么?有人可以建议我如何解决它吗?提前致谢
答案 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