2016-07-07 3 views
0

폼을 열 때 ToolStripMenu가 있습니다. 양식은 Split Container의 패널 중 하나에 배치 된 TabControl에서 열립니다. Split 컨테이너에도 버튼을 놓았습니다. 선택된 TabPages (폼이 열려있는 곳)가 닫힙니다. 문제는 새로운 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, how? ... "TabControl1.SelectedTab = PageNew"다음에 FrmItem = Nothing 및 PageNew = Nothing을 시도했지만 작동하지 않습니다. "PageNew.Controls.Add (Frmitem)"도 작동하지 않기 전에 오류가 발생합니다. – LuckyLuke82

+0

우수한 SSS, 또는 드와이트 또는 오히려 둘 다 :) ... 그것은 작동합니다, 지금 당신이 의미하는 바를 이해합니다, 나는 VB.NET 초보자입니다. 고맙습니다 !! – LuckyLuke82