📄 tabcontrol.vb
字号:
Public Property ControlButtonBackHighColor() As System.Drawing.Color
Get
Return DropButton.BackHighColor
End Get
Set(ByVal Value As Color)
DropButton.BackHighColor = Value
CloseButton.BackHighColor = Value
End Set
End Property
Friend Function ShouldSerializeControlButtonBackHighColor() As Boolean
Return DropButton.BackHighColor <> Me.defaultControlButtonBackHighColor
End Function
Friend Sub ResetControlButtonBackHighColor()
DropButton.BackHighColor = Me.defaultControlButtonBackHighColor
CloseButton.BackHighColor = Me.defaultControlButtonBackHighColor
End Sub
<Browsable(True), Category("Appearance"), Description("Gets or sets the System.Drawing.Color structure that represents the ending color of the Background linear gradient for the control button.")> _
Public Property ControlButtonBackLowColor() As Color
Get
Return DropButton.BackLowColor
End Get
Set(ByVal Value As Color)
DropButton.BackLowColor = Value
CloseButton.BackLowColor = Value
End Set
End Property
Friend Function ShouldSerializeControlButtonBackLowColor() As Boolean
Return DropButton.BackLowColor <> Me.defaultControlButtonBackLowColor
End Function
Friend Sub ResetControlButtonBackLowColor()
DropButton.BackLowColor = Me.defaultControlButtonBackLowColor
CloseButton.BackLowColor = Me.defaultControlButtonBackLowColor
End Sub
<Browsable(True), Category("Appearance"), Description("Gets or sets the System.Drawing.Color structure that represents the border color for the control button.")> _
Public Property ControlButtonBorderColor() As Color
Get
Return DropButton.BorderColor
End Get
Set(ByVal Value As Color)
DropButton.BorderColor = Value
CloseButton.BorderColor = Value
End Set
End Property
Friend Function ShouldSerializeControlButtonBorderColor() As Boolean
Return DropButton.BorderColor <> Me.defaultControlButtonBorderColor
End Function
Friend Sub ResetControlButtonBorderColor()
DropButton.BorderColor = Me.defaultControlButtonBorderColor
CloseButton.BorderColor = Me.defaultControlButtonBorderColor
End Sub
<Browsable(True), Category("Appearance"), Description("Gets or sets the System.Drawing.Color structure that represents the ForeColor for the control button.")> _
Public Property ControlButtonForeColor() As Color
Get
Return DropButton.ForeColor
End Get
Set(ByVal Value As Color)
DropButton.ForeColor = Value
CloseButton.ForeColor = Value
End Set
End Property
Friend Function ShouldSerializeControlButtonForeColor() As Boolean
Return DropButton.ForeColor <> Me.defaultControlButtonForeColor
End Function
Friend Sub ResetControlButtonForeColor()
DropButton.ForeColor = Me.defaultControlButtonForeColor
CloseButton.ForeColor = Me.defaultControlButtonForeColor
End Sub
<Browsable(True), Category("Appearance"), Description("Gets or sets the System.Drawing.Color structure that represents the ending color of the Background linear gradient for the tabs region.")> _
Public Property BackLowColor() As System.Drawing.Color
Get
Return m_BackLowColor
End Get
Set(ByVal Value As Color)
m_BackLowColor = Value
Invalidate()
End Set
End Property
Friend Function ShouldSerializeBackLowColor() As Boolean
Return m_BackLowColor <> Me.defaultBackLowColor
End Function
Friend Sub ResetBackLowColor()
m_BackLowColor = Me.defaultBackLowColor
End Sub
<Browsable(True), Category("Appearance"), Description("Gets or sets the System.Drawing.Color structure that represents the starting color of the Background linear gradient for the tabs region.")> _
Public Property BackHighColor() As Color
Get
Return m_BackHighColor
End Get
Set(ByVal Value As Color)
m_BackHighColor = Value
Invalidate()
End Set
End Property
Friend Function ShouldSerializeBackHighColor() As Boolean
Return m_BackHighColor <> Me.defaultBackHighColor
End Function
Friend Sub ResetBackHighColor()
m_BackHighColor = Me.defaultBackHighColor
End Sub
<Browsable(True), Category("Appearance"), Description("Gets or sets the System.Drawing.Color structure that represents the border color.")> _
Public Property BorderColor() As Color
Get
Return m_BorderColor
End Get
Set(ByVal Value As Color)
m_BorderColor = Value
For Each t As TabPage In TabPages
t.BorderColor = Value
Next
pnlTabs.Invalidate()
pnlTop.Invalidate()
End Set
End Property
Friend Function ShouldSerializeBorderColor() As Boolean
Return m_BorderColor <> Me.defaultBorderColor
End Function
Friend Sub ResetBorderColor()
m_BorderColor = Me.defaultBorderColor
End Sub
<Browsable(False), Description("Gets the collection of tab pages in this tab control.")> _
Public ReadOnly Property TabPages() As TabPageCollection
Get
Return Items
End Get
End Property
<Browsable(True), Category("Appearance"), Description("The painting style applied to the control.")> _
Public Property RenderMode() As ToolStripRenderMode
Get
Return m_RenderMode
End Get
Set(ByVal value As ToolStripRenderMode)
m_RenderMode = value
DropButton.RenderMode = value
CloseButton.RenderMode = value
WinMenu.RenderMode = value
For Each t As TabPage In TabPages
t.RenderMode = value
Next
End Set
End Property
<Browsable(False)> _
Public Property MenuRenderer() As ToolStripRenderer
Get
Return m_ContextMenuRenderer
End Get
Set(ByVal value As ToolStripRenderer)
m_ContextMenuRenderer = value
WinMenu.Renderer = m_ContextMenuRenderer
End Set
End Property
<Browsable(True), Category("Appearance"), DefaultValue(Weight.Medium), Description("The weight of the border.")> _
Public Property TabBorderEnhanceWeight() As Weight
Get
Return m_TabBorderEnhanceWeight
End Get
Set(ByVal value As Weight)
m_TabBorderEnhanceWeight = value
For Each t As TabPage In TabPages
t.BorderEnhanceWeight = value
Next
End Set
End Property
Friend Function ShouldSerializeRenderMode() As Boolean
Return m_RenderMode <> Me.defaultRenderMode
End Function
Friend Sub ResetRenderMode()
m_RenderMode = Me.defaultRenderMode
End Sub
Private Sub SetControlsSizeLocation()
If DropButton.Visible And CloseButton.Visible Then
pnlControls.Width = 43
ElseIf DropButton.Visible Or CloseButton.Visible Then
pnlControls.Width = 25
Else
pnlControls.Width = 3
End If
pnlControls.Left = Me.Width - pnlControls.Width
CheckVisibility()
End Sub
Private Sub AdjustHeight()
If Alignment = TabAlignment.Top Then
pnlTop.Anchor = AnchorStyles.Top Or AnchorStyles.Left Or AnchorStyles.Right
pnlTop.Height = pnlTabs.Height + m_TabTop
pnlTop.Top = IIf(m_TopSeparator, 2, 0)
pnlTabs.Top = m_TabTop
pnlBottom.Height = Me.Height - (pnlTop.Height + IIf(m_TopSeparator, 2, 0))
pnlBottom.Top = Me.Height - pnlBottom.Height
Else
pnlTop.Anchor = AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right
pnlTop.Height = pnlTabs.Height + m_TabTop
pnlTop.Top = Me.Height - pnlTop.Height
pnlTabs.Top = 0
pnlBottom.Height = Me.Height - (pnlTop.Height + IIf(m_TopSeparator, 2, 0))
pnlBottom.Top = IIf(m_TopSeparator, 2, 0)
End If
pnlTop.Invalidate()
End Sub
Private Sub ArrangeItems()
pnlTabs.SuspendLayout()
If Items.Count = 0 Then Exit Sub
Dim x As Integer = LeftOffset
For i As Integer = 0 To Items.Count - 1
Items(i).TabVisible = x + Items(i).Width < pnlControls.Left
If Items(i).IsSelected And Not Items(i).TabVisible Then
SelectItem(Items(i))
Exit Sub
End If
Items(i).TabLeft = x
x += Items(i).Width + m_TabOffset - 1
Next
If Not AddingPage Then
If IsDelete Then
For i As Integer = Items.Count - 1 To 0 Step -1
ShowTab(i)
Next
IsDelete = False
Else
For i As Integer = 0 To Items.Count - 1
ShowTab(i)
Next
End If
End If
pnlTabs.ResumeLayout()
End Sub
Private Sub CheckVisibility()
If Items Is Nothing Then Exit Sub
Dim x As Integer = LeftOffset
For i As Integer = 0 To Items.Count - 1
If Items(i).TabVisible <> (x + Items(i).Width < pnlControls.Left) Then
If Items(i).TabVisible Then
Items(i).TabVisible = False
If Items(i).IsSelected Then
SelectItem(Items(i))
Exit Sub
Else
ShowTab(i)
Exit Sub
End If
Else
Items(i).TabVisible = True
Items(i).TabLeft = x
ShowTab(i)
End If
ElseIf Not Items(i).TabVisible Then
Exit Sub
End If
x += Items(i).Width + m_TabOffset - 1
If x > pnlControls.Left Then Exit Sub
Next
End Sub
Private Sub ShowTab(ByVal i As Integer)
Items(i).Visible = Items(i).TabVisible
If Items(0).Width <> 1 Then Items(i).Left = Items(i).TabLeft
End Sub
Private Sub SelectItem(ByVal TabPage As TabPage)
For Each T As TabPage In TabPages
T.IsSelected = False
Next
If TabPage IsNot Nothing Then
For Each t As TabPage In TabPages
If m_TabsDirection = FlowDirection.LeftToRight Then t.SendToBack() Else t.BringToFront()
Next
' only the visible tab container has style doc.fill - when resize don't resize all tab containers
TabPage.m_Form.Dock = DockStyle.Fill
TabPage.m_Form.Visible = True
TabPage.BringToFront()
TabPage.m_Form.BringToFront()
TabPage.m_Form.Focus()
If pnlBottom.Controls.Count > 1 Then
pnlBottom.Controls(1).Visible = False
pnlBottom.Controls(1).Dock = DockStyle.None
End If
TabPage.IsSelected = True
If Not TabPage.TabVisible And TabPages.IndexOf(TabPage) <> 0 Then
TabPages.IndexOf(TabPage) = 0
End If
ElseIf pnlTabs.Controls.Count > 0 Then
For Each t As TabPage In Items
If t.m_Form.Equals(pnlBottom.Controls(0)) Then
t.Select()
Exit For
End If
Next
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -