Visual Basic .NET - 更改一个listBox项的颜色

时间:2011-03-09 02:17:41

标签: vb.net text colors listbox

我在VB.NET中制作一个小程序。我有一个listBox和一个按钮。我希望能够按下按钮并将所选的listBox项目更改为foreColor为绿色。我尝试了很多方法,从覆盖draw方法到使用listView(listBox对我正在做的更好,请不要建议我使用listView,我已经尝试过了。 )

起初我认为这很简单,但事实正好相反,我很沮丧,这么简单的任务应该是如此困难。我不想使用任何第三方控件,因为我必须完全重写我的应用程序。

我尝试了很多不同的选择,甚至都不好笑。请问,有人可以提供更简单的解决方案吗?

-Q

1 个答案:

答案 0 :(得分:1)

您需要处理 DrawItem 事件和 DrawMode = OwnerDrawFixed 属性。

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

    If ListBox1.SelectedIndices.Contains(e.Index) And buttonPressed Then
        e.Graphics.DrawString(ListBox1.Items(e.Index), e.Font, Brushes.Green, e.Bounds.X, e.Bounds.Y)

    Else
        e.Graphics.DrawString(ListBox1.Items(e.Index), e.Font, Brushes.Black, e.Bounds.X, e.Bounds.Y)
    End If
    If e.Index = ListBox1.Items.Count - 1 Then
        buttonPressed = False
    End If
    e.DrawFocusRectangle()
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    buttonPressed = True
    ListBox1.Refresh()
End Sub