Solved

Visual Basic 2008. color dropdown menu

Posted on 2009-05-06
2
505 Views
Last Modified: 2013-11-27
How do I make a color choosing dropdown just like the color dropdown in properties window?

I don't want the color dialog but a color dropdown.

Thanks!
0
Comment
Question by:NerdsOfTech
2 Comments
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 24327970
Here is one version:
Imports System.Reflection
Public Class Form1
 
    Private KnownColors As New List(Of KnownColor)
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Each C As Color In System.ComponentModel.TypeDescriptor.GetConverter(GetType(Color)).GetStandardValues
            If Not C.IsSystemColor Then
                KnownColors.Add(C.ToKnownColor)
            End If
        Next
        ComboBox1.DataSource = KnownColors
        ComboBox1.DrawMode = DrawMode.OwnerDrawFixed
    End Sub
 
    Private Sub ComboBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
        Static width As Integer = 15
        e.DrawBackground()
        Dim KC As KnownColor = KnownColors(e.Index)
        Dim rc As New Rectangle(e.Bounds.X + 3, e.Bounds.Y + 3, width, e.Bounds.Height - 6)
        Using B As New SolidBrush(Color.FromKnownColor(KC))
            e.Graphics.FillRectangle(B, rc)
            e.Graphics.DrawRectangle(Pens.Black, rc)
        End Using
        e.Graphics.DrawString(KC.ToString, ComboBox1.Font, Brushes.Black, e.Bounds.X + (width + 6), e.Bounds.Y)
    End Sub
 
    Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
        If ComboBox1.SelectedIndex <> -1 Then
            Dim kc As KnownColor = ComboBox1.SelectedValue
            Me.BackColor = Color.FromKnownColor(kc)
        End If
    End Sub
 
End Class

Open in new window

ColorDropDown.jpg
0
 
LVL 19

Author Closing Comment

by:NerdsOfTech
ID: 31578867
Another superb display of knowledge! Thank you Idle_Mind.

I will be asking another related question about this type of control in the future. I will post here to notify you.

=NerdsOfTech
0

Featured Post

Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

What my article will show is if you ever had to do processing to a listbox without being able to just select all the items in it. My software Visual Studio 2008 crystal report v11 My issue was I wanted to add crystal report to a form and show…
For a while now I'v been searching for a circular progress control, much like the one you get when first starting your Silverlight application. I found a couple that were written in WPF and there were a few written in Silverlight, but all appeared o…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question