更改列表框上包含drawitem上特定字符串的特定项目的颜色

时间:2013-04-10 20:44:07

标签: vb.net listbox

我想更改包含特定字符串的项目的颜色

Private Sub ListBox2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox2.DrawItem
    e.DrawBackground()
    If DrawItemState.Selected.ToString.Contains("specific string") Then
        e.Graphics.FillRectangle(Brushes.LightGreen, e.Bounds)
    End If

    e.DrawFocusRectangle()

这是我的代码,但没有工作

1 个答案:

答案 0 :(得分:13)

好的,首先你需要将列表框的属性DrawMode设置为“OwnerDrawFixed”而不是Normal。否则你永远不会触发DrawItem事件。完成后,这一切都非常简单。

Private Sub ListBox1_DrawItem(sender As System.Object, e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
    e.DrawBackground()

    If ListBox1.Items(e.Index).ToString() = "herp" Then

        e.Graphics.FillRectangle(Brushes.LightGreen, e.Bounds)
    End If
    e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), e.Font, Brushes.Black, New System.Drawing.PointF(e.Bounds.X, e.Bounds.Y))
    e.DrawFocusRectangle()
End Sub

如果选择,您将不得不用不同的颜色触摸它。但这应该足以让你继续努力。你很亲密,记住这一点。 :)