2016-07-07 10 views
0

У меня есть ToolStripMenu, откуда я открываю формы. Формы открываются в TabControl, который помещается в одну из панелей Split Container. Я также разместил кнопку в контейнере Split, он закрывает любые выбранные вкладки (где формы открыты). Проблема в том, что когда я открываю форму в новой вкладке TabPage и закрываю ее этой кнопкой, форма больше не открывается. ЗАЧЕМ ? .... Вот мой код:VB.NET - Форма в TabControl не открыта после закрытия.

Private Sub SearchItemsAPOToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SearchItemsToolStripMenuItem.Click 

     'Define new page in Tab control and form to open in It 
     Dim PageNew As New TabPage() 
     Dim FrmItem As New Search_Items 

     'Define where and how form should open 
     FrmItem.TopLevel = False 
     FrmItem.Dock = DockStyle.Fill 
     FrmItem.FormBorderStyle = FormBorderStyle.None 

     'If form allready opened in TabPage, only send focus to It 
     If Application.OpenForms().OfType(Of Search_Items).Any Then 

      For Each page As TabPage In TabControl1.TabPages 

       If page.Text = "Search Items" Then 

        TabControl1.SelectedTab = page 

       End If 

      Next page 

      'If form not allready opened, we open It in Tab control and send focus on that TabPage 
     Else 

      PageNew.Controls.Add(FrmItem) 
      PageNew.Text = "Search Items" 
      TabControl1.Visible = True 
      TabControl1.TabPages.Add(PageNew) 
      FrmItem.Show() 
      BtnTab.Visible = True 
      TabControl1.SelectedTab = PageNew 

     End If 

    End Sub 


Private Sub BtnTab_Click(sender As Object, e As EventArgs) Handles BtnTab.Click 

     'Button is visible when TabPages are opened, and with click It closes selected TabPage 
     Me.TabControl1.TabPages.Remove(Me.TabControl1.SelectedTab) 

     'IF no TabPages, button hides again 
     If TabControl1.TabPages.Count = 0 Then 
      TabControl1.Visible = False 
      BtnTab.Visible = False 
     End If 
    End Sub 
+0

Почему вы удаляете выбранную вкладку, а не просто спрятали ее? –

+0

@Alex B. Вы не можете скрыть вкладки – SSS

+1

Что такое Search_Items? Может быть, 'UserControl'? –

ответ

1

Объект уже существует и только скрыто, и вы снова его создания, распоряжаться объектом, прежде чем воссоздать его.

Dim tbp As TabPage = TabControl1.SelectedTab 
TabControl1.TabPages.Remove(tbp) 
tbp.Dispose() 
+0

Dwight, как? ... Я пробовал FrmItem = Nothing и PageNew = Nothing после «TabControl1.SelectedTab = PageNew», и он не работает. До того, как «PageNew.Controls.Add (Frmitem)» также не работает, он вызывает ошибку. – LuckyLuke82

+0

Отличный SSS, или Дуайт, или скорее ОБА:) ... Он работает, теперь я понимаю, что вы имели в виду, я начинающий VB.NET. Спасибо !! – LuckyLuke82