Изменение цветов раскрывающегося списка ComboBox с SuggestAppend
- VS 2013, версия 12, обновление 5
- Приложение VB.net для Windows Form
У меня есть форма с элементом управления ComboBox, чей DataSource является DataTable. Я хочу раскрасить фон выпадающих элементов на основе поля в источнике данных. Я заполняю DataTable и настраиваю ComboBox DataSource программно во время выполнения.
Прямо сейчас я могу раскрасить варианты выбора следующим кодом, который запускается в событии DrawItem ComboBox.
Private Sub DrawGridComboBoxItem(sender As Object, e As DrawItemEventArgs) Handles cboLocationID.DrawItem
If e.Index <> -1 Then
e.DrawBackground()
Dim cb As ComboBox = TryCast(sender, ComboBox)
Dim dt As DataTable = TryCast(cb.DataSource, DataTable)
If (e.State And DrawItemState.Focus) <> DrawItemState.Focus AndAlso cb.DroppedDown Then
If dt.Rows(e.Index).Item("locationStatus") = 1 Then
e.Graphics.FillRectangle(Brushes.Red, e.Bounds)
ElseIf dt.Rows(e.Index).Item("locationStatus") = 2 Then
e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
Else
e.Graphics.FillRectangle(Brushes.White, e.Bounds)
End If
End If
e.Graphics.DrawString(dt.Rows(e.Index).Item("locationName"), e.Font, Brushes.Black, e.Bounds)
e.DrawFocusRectangle()
End If
End Sub
Это прекрасно работает, когда я нажимаю стрелку раскрывающегося списка в ComboBox, чтобы увидеть элементы списка. У большинства есть белый фон. Некоторые имеют сероватый (Gainsboro) фон. У некоторых есть красный фон.
Проблема возникает, когда я набираю в ComboBox вместо того, чтобы щелкать и выбирать из списка. Упреждающий ввод работает нормально, и правильные варианты фильтруются и отображаются по мере ввода текста, но ни у одного из них не задан цвет фона, кроме белого.
Событие DrawItem даже не вызывается при вводе в ComboBox. Есть ли еще одно событие, к которому я мог бы подключиться?
ComboBox имеет следующие свойства:
- AutoCompleteMode: SuggestAppend
- AutoCompleteSource: ListItems
- DrawMode: OwnerDrawVariable
- FlatStyle: квартира