1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
'Le CUSTOM BUTTON
Imports System.Drawing.Drawing2D
Imports System.Drawing.Design
Imports System.ComponentModel
Imports System.Windows.Forms.VisualStyles
Public Class CollapseButton
Inherits StateButtonBase
' Property fields
Private _collapsed As Boolean
Public Sub New()
Me.SetStyle(ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer Or ControlStyles.SupportsTransparentBackColor, True)
Me.DoubleBuffered = True
End Sub
Public Property Collapsed() As Boolean
Get
Return _collapsed
End Get
Set(ByVal value As Boolean)
If value <> _collapsed Then
_collapsed = value
Invalidate()
End If
End Set
End Property
Protected Overrides Sub OnTextChanged(ByVal e As EventArgs)
MyBase.OnTextChanged(e)
Invalidate()
End Sub
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
Dim renderer As VisualStyleRenderer
' Paint parent background
InvokePaintBackground(Me, New PaintEventArgs(e.Graphics, ClientRectangle))
' Paint background
renderer = New VisualStyleRenderer(VisualStyleElement.ExplorerBar.NormalGroupHead.Normal)
renderer.DrawBackground(e.Graphics, New Rectangle(0, 0, e.ClipRectangle.Width, 25))
' Draw Text
Dim fontRect As New Rectangle(17, 6, Me.Width - 17 - 24, Me.Height)
If (State And StateButtonState.Pressed) <> 0 Then
TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, fontRect, SystemColors.InactiveCaption, TextFormatFlags.Top Or TextFormatFlags.Left)
Else
If (State And StateButtonState.MouseHover) <> 0 Then
TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, fontRect, SystemColors.InactiveCaption, TextFormatFlags.Top Or TextFormatFlags.Left)
Else
If Not Enabled Then
TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, fontRect, SystemColors.GrayText, TextFormatFlags.Top Or TextFormatFlags.Left)
Else
TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, fontRect, SystemColors.MenuHighlight, TextFormatFlags.Top Or TextFormatFlags.Left)
End If
End If
End If
If Not Collapsed Then
If (State And StateButtonState.Pressed) <> 0 Then
renderer = New VisualStyleRenderer(VisualStyleElement.ExplorerBar.NormalGroupCollapse.Pressed)
' If hot
Else
If (State And StateButtonState.MouseHover) <> 0 Then
renderer = New VisualStyleRenderer(VisualStyleElement.ExplorerBar.NormalGroupCollapse.Hot)
' If disabled
Else
If Not Enabled Then
renderer = New VisualStyleRenderer(VisualStyleElement.ExplorerBar.NormalGroupCollapse.Normal)
' If normal
Else
renderer = New VisualStyleRenderer(VisualStyleElement.ExplorerBar.NormalGroupCollapse.Normal)
End If
End If
End If
Else
' If pressed
If (State And StateButtonState.Pressed) <> 0 Then
renderer = New VisualStyleRenderer(VisualStyleElement.ExplorerBar.NormalGroupExpand.Pressed)
' If hot
Else
If (State And StateButtonState.MouseHover) <> 0 Then
renderer = New VisualStyleRenderer(VisualStyleElement.ExplorerBar.NormalGroupExpand.Hot)
' If disabled
Else
If Not Enabled Then
renderer = New VisualStyleRenderer(VisualStyleElement.ExplorerBar.NormalGroupExpand.Normal)
' If normal
Else
renderer = New VisualStyleRenderer(VisualStyleElement.ExplorerBar.NormalGroupExpand.Normal)
End If
End If
End If
End If
renderer.DrawBackground(e.Graphics, New Rectangle(Me.Width - 22, 3, 20, 20))
MyBase.OnPaint(e)
End Sub
End Class |
Partager