Visual Basic .NET - изменение цвета одного элемента списка - PullRequest
0 голосов
/ 09 марта 2011

Я делаю небольшую программу в VB.NET.У меня есть список и кнопка.Я хотел бы иметь возможность нажать на кнопку и изменить выбранный элемент списка, чтобы он стал foreColor зеленым.Я попробовал много способов сделать это, от переопределения метода draw до использования listView (listBox намного лучше для того, что я делаю, пожалуйста, не рекомендую использовать listView, я уже попробовал это.)

Сначала я думал, что это будет просто, но это полная противоположность, и я очень расстроен, что такая простая задача должна быть такой сложной.Я не хочу использовать какие-либо сторонние элементы управления, поскольку мне пришлось бы полностью переписать свое приложение.

Я пробовал так много разных вариантов, что это даже не смешно.Пожалуйста, кто-нибудь может предложить более простое решение?

-Q

1 Ответ

1 голос
/ 09 марта 2011

Вам необходимо обработать 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
...