Hi guys. I'm stuck. How can I use a custom color (rgb 25, 25, 25)(for example) as my fill rectangle color instead of the default blue?

    'Private Sub ListBox10_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox10.DrawItem
    '    e.DrawBackground()
    '    If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
    '        e.Graphics.FillRectangle(Color.??, e.Bounds)
    '    End If
    '    Using b As New SolidBrush(e.ForeColor)
    '        e.Graphics.DrawString(ListBox10.GetItemText(ListBox10.Items(e.Index)), e.Font, b, e.Bounds)
    '    End Using
    '    e.DrawFocusRectangle()
    'End Sub

Recommended Answers

All 7 Replies

FillRectangle expects a Brush not a Color, but if you instantiate a Brush derivative(i.e. SolidBrush), you can set the color property using the Color.FromARGB overload that accepts just the RGB values and assume and Alpaha value of 255 (fully opaque).

    Private Sub ListBox10_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox10.DrawItem
        Dim mybrush As System.Drawing.SolidBrush
        mybrush.Color = Color.FromArgb(25, 25, 25)
        e.DrawBackground()
        If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
            e.Graphics.FillRectangle(mybrush, e.Bounds)
        End If
        Using b As New SolidBrush(e.ForeColor)
            e.Graphics.DrawString(ListBox10.GetItemText(ListBox10.Items(e.Index)), e.Font, b, e.Bounds)
        End Using
        e.DrawFocusRectangle()
    End Sub

@tinstaafl How would I go about using a custom color and not a default built-in one? Like for example, I dont know the name for RGB 25,25,25.

Sorry I hit the wrong button, I've edited it for a better explanation. Of course you can use the overload that accepts the Alpha value and set it for whatever value suits you.

Not all colors have a name. With all the combinations of 255,255,255 integers you can form more than 1,5 million colors. There is however an enumeration that lists all the colors that have a name Click Here

Thanx for the help guys. Im close, one small warning: "Variable mybrush is used before its assigned a value"
Any help with this?

Sorry wasn't able to actually build the code. Try this instead: Dim mybrush As New System.Drawing.SolidBrush(Color.FromArgb(25, 25, 25))

@tinstaafl - perfect! thank you sir!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.