Public Class CustomComboBox Inherits ComboBox Public Sub New() MyBase.New() DrawMode = DrawMode.OwnerDrawFixed End Sub 'Protected Overrides Sub OnEnabledChanged(e As EventArgs) ' 'MyBase.OnEnabledChanged(e) ' If Me.Enabled Then ' Me.DropDownStyle = ComboBoxStyle.DropDown ' Else ' Me.DropDownStyle = ComboBoxStyle.DropDownList ' End If 'End Sub Protected Overrides Sub OnDrawItem(e As DrawItemEventArgs) Dim g As System.Drawing.Graphics = e.Graphics Dim rect As Rectangle = e.Bounds If e.Index >= 0 Then Dim label As String ' Wenn die Items eine Static List ist, wird der String ausgelesen If (Me.Items(e.Index).GetType() = GetType(String)) Then label = Me.Items(e.Index).ToString() Else Try 'Wenn die Items aus einer Datatable kommen, wird der DisplayMember ausgelesen Dim rowView As DataRowView = Me.Items(e.Index) Dim rowCount As Integer = rowView.Row.ItemArray.Count If rowCount = 1 Then label = rowView.Item(0) ElseIf rowCount = 2 Then label = rowView.Item(1) End If Catch ex As Exception LOGGER.Warn("Unexpected error in OnDrawItem (datatable): " & ex.Message) End Try End If If e.State = (DrawItemState.Disabled Or DrawItemState.NoAccelerator Or DrawItemState.NoFocusRect Or DrawItemState.ComboBoxEdit) Then ' DISABLED STATE g.FillRectangle(New SolidBrush(System.Drawing.SystemColors.Info), rect) g.DrawString(label, e.Font, Brushes.Black, rect) e.DrawFocusRectangle() ElseIf (e.State = (DrawItemState.NoAccelerator Or DrawItemState.NoFocusRect)) Then ' ITEMS NOT IN FOCUS g.FillRectangle(New SolidBrush(Color.White), rect) g.DrawString(label, e.Font, Brushes.Black, rect) e.DrawFocusRectangle() Else ' ITEMS IN FOCUS g.FillRectangle(New SolidBrush(System.Drawing.SystemColors.Highlight), rect) g.DrawString(label, e.Font, Brushes.White, rect) e.DrawFocusRectangle() End If End If g.Dispose() End Sub End Class