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 ответ
Просто провел быструю проверку вашего кода. Я предполагаю, что, поскольку у вас есть публичное представление о вашем новом вкладке, вы объявляете его на уровне класса. Ваш код работает, он добавляет новый TabControl на TabPage. Читая комментарий Ханса, он, скорее всего, прав в том, что происходит. Если вы используете имя класса формы вместо имени экземпляра, вы ничего не увидите. Если вы пытаетесь добавить эти элементы управления из другой формы, вам нужно будет передать экземпляр формы, в которую вы добавляете его. Не видя, как вы структурируете свой проект, это просто дикое предположение.
Мой пример:
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