使用SuggestAppend更改ComboBox下拉颜色

  • VS 2013版本12更新5
  • VB.net Windows窗体应用程序
  • 我有一个ComboBox控件的DataSource是DataTable的窗体。 我想根据数据源中的字段为下拉项目的背景着色。 我正在填充DataTable并在运行时以编程方式设置ComboBox DataSource。

    现在,我可以使用以下在ComboBox的DrawItem事件上触发的代码对选项着色。

     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
    

    当我单击组合框上的下拉箭头查看列表项时,这很好。 大多数人都有白色背景。 有些具有灰色(Gainsboro)背景。 一些有红色背景。

    当我输入组合框而不是点击并从列表中选择时,会发生问题。 提前输入工作正常,并且正确的选项会被过滤并显示为我输入的内容,但是他们都没有将其背景颜色设置为除白色之外的任何其他颜色。

    在输入组合框时,DrawItem事件甚至不会被调用。 是否还有其他事件可以吸引我?

    ComboBox具有以下属性设置:

  • AutoCompleteMode:SuggestAppend
  • AutoCompleteSource:ListItems
  • DrawMode:OwnerDrawVariable
  • FlatStyle:Flat
  • 链接地址: http://www.djcxy.com/p/60911.html

    上一篇: Changing ComboBox dropdown colors with SuggestAppend

    下一篇: Bind two lists to combobox, one only for suggestions