Control ini dibuat dengan meng-inherits dari usercontrol class dan bisa dimanfaatkan sebagai button. Control ini bergradien warnanya, bisa diatur warna1 dan warna2 nya lewat properties window berikut cursor aktif dan cursor non aktif ketika event mouse hover terjadi. Control ini bisa dimanfaatkan sebagai button atau sebagai label dengan mengatur properti aktif nya ke true atau false...berikut code nya :
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.ComponentModel
Public Class RoelMultiPurposePanel
Inherits System.Windows.Forms.UserControl
#Region "Variables Declaration"
Delegate Sub ClickDelegate(ByVal sender As Object, ByVal e As System.EventArgs)
Public Event On_Click As ClickDelegate
Private m_Aktif As Boolean
Private m_Enabled As Boolean
Private m_WarnaSatuAktif As Color = Color.Orange
Private m_WarnaDuaAktif As Color = Color.Yellow
Private m_WarnaSatuTidakAktif As Color = Color.Blue
Private m_WarnaDuaTidakAktif As Color = Color.Aquamarine
Private m_WarnaTeks As Color = Color.White
Private m_WarnaHoverTeks As Color = Color.Black
Private m_CursorAktif As Cursor
Private m_CursorTidakAktif As Cursor
#End Region
#Region "Properties"
<Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur bisa diklik atau tidak")> _
Public Property Enable() As Boolean
Get
Return m_Enabled
End Get
Set(ByVal Value As Boolean)
m_Enabled = Value
End Set
End Property
<Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur judul teks")> _
Public Property TeksJudul() As String
Get
Return MyBase.Text
End Get
Set(ByVal Value As String)
MyBase.Text = Value
Me.Invalidate()
End Set
End Property
<Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna judul teks")> _
Public Property WarnaTeks() As Color
Get
Return m_WarnaTeks
End Get
Set(ByVal Value As Color)
Me.m_WarnaTeks = Value
End Set
End Property
<Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna judul hover teks")> _
Public Property WarnaHoverTeks() As Color
Get
Return Me.m_WarnaHoverTeks
End Get
Set(ByVal Value As Color)
Me.m_WarnaHoverTeks = Value
Me.Invalidate()
End Set
End Property
<Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna aktif gradient kesatu")> _
Public Property WarnaSatuAktif() As Color
Get
Return Me.m_WarnaSatuAktif
End Get
Set(ByVal Value As Color)
Me.m_WarnaSatuAktif = Value
End Set
End Property
<Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna aktif gradient kedua")> _
Public Property WarnaDuaAktif() As Color
Get
Return Me.m_WarnaDuaAktif
End Get
Set(ByVal Value As Color)
Me.m_WarnaDuaAktif = Value
End Set
End Property
<Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna tidak aktif gradient kesatu")> _
Public Property WarnaSatuTidakAktif() As Color
Get
Return Me.m_WarnaSatuTidakAktif
End Get
Set(ByVal Value As Color)
Me.m_WarnaSatuTidakAktif = Value
End Set
End Property
<Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna tidak aktif gradient kedua")> _
Public Property WarnaDuaTidakAktif() As Color
Get
Return Me.m_WarnaDuaTidakAktif
End Get
Set(ByVal Value As Color)
Me.m_WarnaDuaTidakAktif = Value
End Set
End Property
<Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur cursor ketika teks aktif")> _
Public Property CursorAktif() As Cursor
Get
Return Me.m_CursorAktif
End Get
Set(ByVal Value As Cursor)
Me.m_CursorAktif = Value
End Set
End Property
<Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur cursor ketika teks tidak aktif")> _
Public Property CursorTidakAktif() As Cursor
Get
Return Me.m_CursorTidakAktif
End Get
Set(ByVal Value As Cursor)
Me.m_CursorTidakAktif = Value
End Set
End Property
<Browsable(False), Category("Roel's Appearance"), Description("Untuk menentukan aktif atau tidak panelnya")> Public Property Aktif() As Boolean
Get
Return Me.m_Aktif
End Get
Set(ByVal Value As Boolean)
Me.m_Aktif = Value
End Set
End Property
#End Region
#Region "GDI+"
Private Sub DrawRect(ByVal g As Graphics)
Dim lgd As LinearGradientBrush
Dim r As New Rectangle(0, 0, Me.Width, Me.Height)
If Me.Aktif = True Then
lgd = New LinearGradientBrush(r, Me.WarnaSatuAktif, Me.WarnaDuaAktif, 270)
g.FillRectangle(lgd, r)
Else
lgd = New LinearGradientBrush(r, Me.WarnaSatuTidakAktif, Me.WarnaDuaTidakAktif, 270)
g.FillRectangle(lgd, r)
End If
End Sub
Private Sub DrawHeaderText(ByVal g As Graphics)
If Me.Aktif = True Then
g.DrawString(Me.Text, Me.Font, New SolidBrush(Me.WarnaHoverTeks), 0, 0, StringFormat.GenericDefault)
Else
g.DrawString(Me.Text, Me.Font, New SolidBrush(Me.WarnaTeks), 0, 0, StringFormat.GenericDefault)
End If
End Sub
#End Region
#Region "Overrides"
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Me.DrawRect(e.Graphics)
Me.DrawHeaderText(e.Graphics)
MyBase.OnPaint(e)
End Sub
Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
Me.Invalidate()
MyBase.OnResize(e)
End Sub
Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs)
MyBase.OnMouseLeave(e)
If Me.Enable = True Then
Me.Aktif = False
Me.Invalidate()
End If
Me.Cursor = Me.CursorTidakAktif
End Sub
Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
MyBase.OnMouseEnter(e)
If Me.Enable = True Then
Me.Aktif = True
Me.Cursor = Me.CursorAktif
Me.Invalidate()
Else
Me.Cursor = Me.CursorTidakAktif
End If
End Sub
#End Region
#Region "Events"
Protected Overrides Sub OnClick(ByVal e As System.EventArgs)
If Me.Enable = True Then
MyBase.OnClick(e)
RaiseEvent On_Click(Me, EventArgs.Empty)
End If
End Sub
#End Region
End Class