Imports System.Drawing.Drawing2D '-------------------- [ /ComboBox ] --------------------- Public Class ReactorComboBox : Inherits ComboBox #Region " Control Help - Properties & Flicker Control " Protected Overrides Sub OnPaintBackground(ByVal pevent As System.Windows.Forms.PaintEventArgs) End Sub Private _StartIndex As Integer = 0 Public Property StartIndex() As Integer Get Return _StartIndex End Get Set(ByVal value As Integer) _StartIndex = value Try If Not MyBase.SelectedIndex <> Nothing Then MyBase.SelectedIndex = value End If Catch End Try Invalidate() End Set End Property Private LightBlack As Color = Color.FromArgb(37, 37, 37) Private LighterBlack As Color = Color.FromArgb(60, 60, 60) Sub ReplaceItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles Me.DrawItem e.DrawBackground() Try If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(255, 0, 36, 0)), e.Bounds) '37 37 37 End If If e.Index > -1 Then Using b As New SolidBrush(e.ForeColor) e.Graphics.DrawString(MyBase.GetItemText(MyBase.Items(e.Index)), e.Font, b, e.Bounds) End Using End If Catch End Try e.DrawFocusRectangle() End Sub Protected Sub DrawTriangle(ByVal Clr As Color, ByVal FirstPoint As Point, ByVal SecondPoint As Point, ByVal ThirdPoint As Point, ByVal G As Graphics) Dim points As New List(Of Point)() points.Add(FirstPoint) points.Add(SecondPoint) points.Add(ThirdPoint) G.FillPolygon(New SolidBrush(Clr), points.ToArray) End Sub #End Region Sub New() MyBase.New() SetStyle(ControlStyles.AllPaintingInWmPaint Or _ ControlStyles.ResizeRedraw Or _ ControlStyles.UserPaint Or _ ControlStyles.DoubleBuffer, True) DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed BackColor = Color.Black ForeColor = Color.White DropDownStyle = ComboBoxStyle.DropDownList DoubleBuffered = True Invalidate() End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) MyBase.OnPaint(e) Dim G As Graphics = e.Graphics Dim T As LinearGradientBrush = New LinearGradientBrush(New Rectangle(0, 0, Width, 10), Color.FromArgb(62, Color.White), Color.FromArgb(30, Color.White), 90S) Dim DrawCornersBrush As SolidBrush DrawCornersBrush = New SolidBrush(Color.FromArgb(37, 37, 37)) Try With G .SmoothingMode = SmoothingMode.HighQuality .Clear(Color.FromArgb(37, 37, 37)) .FillRectangle(T, New Rectangle(Width - 20, 0, Width, 9)) .DrawLine(Pens.Black, Width - 20, 0, Width - 20, Height) Try '.DrawString(Items(SelectedIndex).ToString, Font, Brushes.White, New Rectangle(New Point(3, 3), New Size(Width - 18, Height))) .DrawString(Text, Font, Brushes.White, New Rectangle(3, 0, Width - 20, Height), New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near}) Catch End Try .DrawLine(New Pen(New SolidBrush(Color.FromArgb(37, 37, 37))), 0, 0, 0, 0) .DrawRectangle(New Pen(New SolidBrush(Color.FromArgb(0, 0, 0))), New Rectangle(1, 1, Width - 3, Height - 3)) .DrawLine(New Pen(New SolidBrush(Color.FromArgb(45, 45, 45))), 0, 0, Width, 0) .DrawLine(New Pen(New SolidBrush(Color.FromArgb(45, 45, 45))), 0, 0, 0, Height) .DrawLine(New Pen(New SolidBrush(Color.FromArgb(45, 45, 45))), Width - 1, 0, Width - 1, Height) .DrawLine(New Pen(New SolidBrush(Color.FromArgb(70, 70, 70))), 0, Height - 1, Width, Height - 1) DrawTriangle(Color.White, New Point(Width - 14, 8), New Point(Width - 7, 8), New Point(Width - 11, 11), G) End With Catch End Try End Sub End Class