简体   繁体   English

VB.NET-TabControl中的窗体关闭后未打开

[英]VB.NET - Form in TabControl not opened after closing It

I have ToolStripMenu from where I open forms. 我在打开表单的地方有ToolStripMenu。 Forms are opened in TabControl, which is placed in one of the Split Container's panel. 窗体在TabControl中打开,该控件位于“拆分容器”面板之一中。 I have placed a button in Split container too, It closes any selected TabPages(where forms open). 我也已在Split容器中放置了一个按钮,它将关闭所有选定的TabPages(打开表单的位置)。 Problem is that when I open form in new TabPage and close It by this button, form doesn't open anymore. 问题是,当我在新的TabPage中打开表单并通过此按钮关闭它时,表单不再打开。 WHY ? 为什么呢? ....Here is my code: ....这是我的代码:

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

The object already exists and is only hidden and you are creating it again, dispose of the object before recreating it. 该对象已经存在并且仅被隐藏,并且您要重新创建它,请在重新创建该对象之前将其处置。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM