Visual Studio Style ComboBox Color

Created at : Jan/31/2008   [Click this link to download code sample]
2194 Views   0 Comments

Kita sering melihat ComboBox yang berisi nama-nama warna yang mempunyai gambar kotak di sebelah namanya yang diisi dengan warna yang bersesuaian. ComboBox tersebut salah satunya dapat kita temukan pada property grid control di properties window. Lalu bagaimana caranya untuk membuat control tersebut. It's simple ternyata :)...Mari kita lihat langkah-langkahnya.

1. Hal pertama yang harus kita lakukan yaitu membuat Windows Forms Control Library  project template pada Visual Studio anda.

2. Modifikasi file component yang diberikan secara default. Kode yang dimodifikasi yaitu Inheritance nya. Jadi anda buka file component tersebut di file .designer.vb atau .designer.cs, lalu kode pewarisan tersebut diganti dengan "ComboBox".

3. Buat sebuah prosedur untuk looping item yang terdapat dalam enumerasi KnownColor untuk ditambahkan ke koleksi Item dari combo box nya. Nantinya didalam combo box ini akan terdapat nama-nama warna. Berikut prosedurnya :

   1:  Private Sub LoadColor()
   2:     For Each aColor In [Enum].GetNames(GetType(System.Drawing.KnownColor))
   3:         Me.Items.Add(aColor)
   4:     Next
   5:  End Sub

4. Agar combobox bisa menampilkan kotak / shape warna yang telah kita tentukan pada properti Text maka properti DropDownStyle harus di set ke ComboBoxStyle.DropDownList. Prosedur LoadColor diatas dipanggil di constructornya. Berikut tambahan kode di constructor :

   1:  Public Sub New()
   2:         MyBase.New()
   3:   
   4:         InitializeComponent()
   5:   
   6:         Me.DropDownStyle = ComboBoxStyle.DropDownList
   7:   
   8:         Me.LoadColor()
   9:         Me.SelectedIndex = 1
  10:   End Sub

5. Langkah terakhir yaitu merubah implementasi kode pada prosedur OnDrawItem. Prosedur ini digunakan untuk merubah tampilan item yang terdapat di combo box. Disinilah letak manipulasi item yang kita inginkan untuk dirubah. Langsung saja kita lihat kodenya :

   1:   Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawItemEventArgs)
   2:          MyBase.OnDrawItem(e)
   3:   
   4:          If e.Index > 0 Then
   5:              Dim strTeks As String = Me.Items(e.Index).ToString
   6:              Dim intRectWidth As Integer = CType(System.Math.Round(Me.Width * 0.1), Integer)
   7:              Dim rect As New Rectangle(e.Bounds.X, e.Bounds.Y, intRectWidth, e.Font.Height)
   8:   
   9:              e.Graphics.DrawEllipse(Pens.Black, rect)
  10:              e.Graphics.FillEllipse(New SolidBrush(Color.FromName(strTeks)), rect)
  11:              e.Graphics.DrawString("==> " & strTeks, Me.Font, New SolidBrush(Color.Black), _
  12:                                    e.Bounds.X + (intRectWidth + 5), e.Bounds.Y)
  13:          End If
  14:      End Sub

6. Prosedur di atas digunakan untuk membuat ellipse yang warnanya diisi sesuai dengan nama warna yang tampil di combobox nya.

- Kode di line-5 digunakan untuk mengambil teks yang berisi nama warnanya, dari teks inilah kita buat warna untuk mengisi shape dari ellipse yang akan ditampilkan di combobox.

- Line-6 dibuat untuk mengatur lebar dari ellipse, saya ambil hanya 1% dari lebar combobox.

- Line-7 digunakan untuk membuat batas ellipse yang akan digunakan

- Line-9 dan line-10 berisi kode untuk membuat ellipse

- Line-11 digunakan untuk membuat teks berupa nama warna di sebelah shape ellipse...That's it :)

7. Build project...Tambahkan control tersebut pada sebuah windows application project template.

8. Buat design interface seperti yang ada pada gambar dibawah. Rectangle shape yang terdapat di form dibuat dengan menggunakan Rectangle shape yang terdapat di dalam Microsoft Visual Basic Power Packs v 2.0, anda bisa mendownloadnya dari situs microsoft.

9. Preview dari aplikasi setelah dijalankan :

Enjoy it ! :)

 


[Comments]

[Write your comment]
Name (required)
URL (optional)
Example : http://www.yulianmf.com  
Comment

DHL9
Input code above below (Case Sensitif) :
About Me 
Rully Yulian MF
My Name is Rully Yulian Muhammad Firmansyah. I am an IT Trainer, IT Consultant and Application Developer spesializing in Microsoft .NET technology and SQL Server database. I live in Bandung, Indonesia. My hobby is to play Guitar. [Read More...]
Top Download 
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 2235 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 2192 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 1523 times  
DataGridView Grouping : Downloaded 1243 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 1232 times  
Article Category 
Links 
Award 
Certifications 
MOS 2007
MCAS
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise - IT Training 
Native Enterprise Facebook Group 
My Facebook 
My LinkedIn 
Syndication (RSS 2.0) 
Powered By 
Native Enterprise News