我遇到了以下问题:我将动态创建的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我做错什么了?有人能给我建议怎么修吗?提前感谢
发布于 2014-02-01 16:17:57
刚对你的代码进行了快速测试。我猜,因为您的新选项卡上有公共可见性,所以您在类级别声明它。您的代码确实有效,它确实在TabControl上添加了一个新的TabPage。在阅读Hans的评论时,他很可能是正确的,如果您使用的是表单的类名而不是实例名,那么您将什么也看不到。如果试图从另一个窗体中添加这些控件,则需要传递要将其添加到的窗体的实例。没有看到你是如何构造你的项目的,这只是一个疯狂的猜测。
我的例子:
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 Classhttps://stackoverflow.com/questions/21500198
复制相似问题