【问题标题】:VB.NET - Form in TabControl not opened after closing ItVB.NET - TabControl 中的表单在关闭后未打开
【发布时间】:2016-07-07 06:50:47
【问题描述】:

我有 ToolStripMenu 从我打开表单的地方。表单在 TabControl 中打开,它位于拆分容器的面板之一中。我也在拆分容器中放置了一个按钮,它会关闭任何选定的 TabPages(表单打开的地方)。问题是当我在新的 TabPage 中打开表单并通过此按钮关闭它时,表单不再打开。为什么 ? ....这是我的代码:

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

【问题讨论】:

  • 为什么要删除选定的标签而不只是隐藏它?
  • @Alex B. 你不能隐藏标签
  • Search_Items 到底是什么? UserControl 可能吗?

标签: vb.net tabcontrol


【解决方案1】:

该对象已经存在并且只是隐藏的并且您正在重新创建它,在重新创建它之前处置该对象。

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

【讨论】:

  • 德怀特,怎么样?...我在“TabControl1.SelectedTab=PageNew”之后尝试了 FrmItem=Nothing 和 PageNew=Nothing,但它不起作用。在“PageNew.Controls.Add(Frmitem)”也不起作用之前,它会产生错误。
  • 优秀的 SSS,或 Dwight 或两者兼而有之 :)...它有效,现在我明白你的意思了,我是 VB.NET 初学者。谢谢!!
猜你喜欢
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2011-04-27
相关资源
最近更新 更多