Winforms WinForm TabControl:如何动态隐藏/显示选项卡标题?

Winforms WinForm TabControl:如何动态隐藏/显示选项卡标题?,winforms,tabcontrol,Winforms,Tabcontrol,我想让我的tabControl更智能一些,以节省一些屏幕空间:如果只有一个选项卡,则不显示选项卡标题;如果有两个或更多选项卡,则显示选项卡标题 我知道您可以完全隐藏选项卡标题,如中所建议的那样。这种方法的问题是,一旦隐藏,我就无法再次显示选项卡标题。还是我错过了什么?赞扬了这个家伙: 要进一步说明Hans的答案: 我想让TabControl也能在设计时隐藏选项卡,但后来出现了一个问题,即一旦隐藏选项卡,就无法选择TabControl再次打开它们,因此我创建了一个自定义TabPage,可以控制此属

我想让我的tabControl更智能一些,以节省一些屏幕空间:如果只有一个选项卡,则不显示选项卡标题;如果有两个或更多选项卡,则显示选项卡标题


我知道您可以完全隐藏选项卡标题,如中所建议的那样。这种方法的问题是,一旦隐藏,我就无法再次显示选项卡标题。还是我错过了什么?

赞扬了这个家伙:


要进一步说明Hans的答案:

我想让TabControl也能在设计时隐藏选项卡,但后来出现了一个问题,即一旦隐藏选项卡,就无法选择TabControl再次打开它们,因此我创建了一个自定义TabPage,可以控制此属性

Imports System.Windows.Forms

Public Class NoHeaderTabPage
Inherits TabPage

Public Property ShowTabs() As Boolean
    Get
        Return CType(Me.Parent, NoHeaderTabControl).ShowTabs
    End Get
    Set(ByVal value As Boolean)
        CType(Me.Parent, NoHeaderTabControl).ShowTabs = value
    End Set
End Property

End Class

有点挖坟墓,但我知道另一个解决办法。我不知道它从哪里来,但在这里:

表单加载:(VB.NET)

其中,
TabControl1
是选项卡控件的名称,
TabPage1
是该控件中第一个选项卡页面的名称

如果您想将其作为例程使用,则可以执行以下操作:

Public Sub hideTabs(ByVal TC as TabControl)
    TC.Region = New Region(New RectangleF(TC.TabPages(0).Left,TC.TabPages(0).Top, TC.TabPages(0).Width, TC.TabPages(0).Height))
End Sub

就这么简单。这样做的好处是,头不会在运行时显示,但在设计时是可见的。

这是一个绝妙的想法。非常感谢你!
Tabcontrol1.Region = New Region (New RectangleF(TabPage1.Left, TabPage1.Top, TabPage1.Width, TabPage1.Height))
Public Sub hideTabs(ByVal TC as TabControl)
    TC.Region = New Region(New RectangleF(TC.TabPages(0).Left,TC.TabPages(0).Top, TC.TabPages(0).Width, TC.TabPages(0).Height))
End Sub