2016-07-07 19 views
0

Ich habe ToolStripMenu von wo ich Formulare öffne. Formulare werden in TabControl geöffnet, das sich in einem der Bereiche des geteilten Containers befindet. Ich habe auch einen Button im Split-Container platziert. Er schließt alle ausgewählten TabPages (wo Formulare geöffnet sind). Problem ist, dass, wenn ich Formular in neuem TabPage öffne und es durch diesen Knopf schließe, Formular nicht mehr öffnet. WARUM ? .... Hier ist mein Code:VB.NET - Formular in TabControl nicht nach dem Schließen geöffnet

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

Warum entfernen Sie die ausgewählte Registerkarte und verstecken sie nicht einfach? –

+0

@Alex B. Sie können Registerkarten nicht ausblenden – SSS

+1

Was genau ist Search_Items? Ein 'UserControl' vielleicht? –

Antwort

1

Das Objekt ist bereits vorhanden und nur versteckt ist und Sie es wieder schaffen, das Objekts verfügen, bevor es neu zu erstellen.

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

Dwight, wie? ... Ich habe FrmItem = Nothing und PageNew = Nothing nach "TabControl1.SelectedTab = PageNew" versucht, und es funktioniert nicht. Bevor "PageNewControls.Add (Frmitem)" auch nicht funktioniert, erzeugt es einen Fehler. – LuckyLuke82

+0

Excellent SSS, oder Dwight oder besser BEIDE:) ... Es funktioniert, jetzt verstehe ich, was Sie meinten, ich bin ein VB.NET Anfänger. Vielen Dank !! – LuckyLuke82