vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: ComboBox - DropDownBackColor Farbe ändern 
Autor: Schü
Datum: 10.05.12 13:22

Hallo!

im Grunde genauso, wie Manfred das gezeigt hat.
Du kannst in OnDrawItem() über e.State abfragen, ob das makierte Item gezeichnet werden soll oder
nicht. Dem entspechend sollte dann der Hintergrund gezeichnet werden oder nicht
<e.DrawFocusRectangle()>

der folgende Code ist ein Ausschnitt aus einem Benutzersteuerelement von mir. Ich habe einen Ausschnitt herauskopiert (hoffe es fehlt nicht etwas wichtiges) Du müsstest dan den Code in m_ColorItem() noch entsprechend Deinen Farbvorstellungen anpassen...

In meinem Code wird vor jedem Item ein farbiges Rechteck (was beim zeichnen des Focusrechtecks beachtet wird) dargestellt. Die Größe dieses Rechtecks ist durch 'RectMargin' festgelegt. Daher die
etwas wilde Ermittlung der Größen der zu zeichnenden Rechtecke. Aber es geht ja um's Prinzip
Das kannst Du alles weglassen.

Wichtig ist, dass mMak anzeigt, wenn das Focusrechteck gezeichnet werden soll und mEditComboItem
das zeichnen des Element direkt im Combo.

Private mMak As Boolean
Private mEditComboItem As Boolean
 
Protected Overrides Sub OnDrawItem(ByVal e As _
  System.Windows.Forms.DrawItemEventArgs)
            mEditComboItem = ((e.State And DrawItemState.ComboBoxEdit) = _
            DrawItemState.ComboBoxEdit)
            mMak = ((e.State And DrawItemState.Focus) = DrawItemState.Focus)
 
            If Not mMak Then e.DrawBackground()
 
            Call m_ColorItem(e.Graphics, e.Bounds, e.Index)
 
            If Not mMak Then e.DrawFocusRectangle()
        End Sub
Private Sub m_ColorItem(ByVal ItemGraphics As Graphics, ByVal ItemRectangle As _
  Rectangle, ByVal ItemIndex As Integer)
            Dim ItemText As String = mSelectedColor.Name
 
            Dim Pen As New Pen(Color.Black, 1)
            Dim TextBrush As New SolidBrush(Me.ForeColor)
            Dim RW As Integer = mRectWidth
 
            Try
                If ItemIndex >= 0 AndAlso ItemIndex < Items.Count Then
                    ItemText = Items(ItemIndex).ToString
 
                    Using ColorBrush As SolidBrush = New SolidBrush( _
                      Color.FromName(ItemText))
                        With ItemGraphics
                            If mMak = True AndAlso mEditComboItem = False Then
                                'Makierung...
                                TextBrush = New SolidBrush(Color.FromKnownColor( _
                                  KnownColor.HighlightText)) 'Hier 
                                ' Focus-Rechteck zeichnen (in Standard-Farbe)
                            End If
 
                            'If mEditComboItem AndAlso Not mShowColorName Then 
                            ' RW = ItemRectangle.Width - RectMargin * 2
 
                            'selektierter Hintergrund...
                            If mMak Then
                                If Not mEditComboItem Then
                                    .FillRectangle(New SolidBrush( _
                                      Me.BackColor), ItemRectangle.Left, _
                                      ItemRectangle.Top, CInt(RW + RectMargin * _
                                      2 + TextMargin / 2), ItemRectangle.Height)
                                End If
                            End If
 
                            .FillRectangle(ColorBrush, ItemRectangle.Left + _
                              RectMargin, ItemRectangle.Top + RectMargin, RW, _
                              ItemRectangle.Height - 4)
                            .DrawRectangle(Pen, New Rectangle( _
                            ItemRectangle.Left + RectMargin - 1, _
                            ItemRectangle.Top + RectMargin - 1, RW + 1, _
                            ItemRectangle.Height - 3))
 
                            If mEditComboItem Then
                                If mShowColorName Then .DrawString(ItemText, _
                                  Me.Font, TextBrush, ItemRectangle.Left + RW + _
                                  RectMargin * 2 + TextMargin, _
                                  ItemRectangle.Top + (ItemRectangle.Height - _
                                  Me.Font.GetHeight()) / 2)
                            Else
                                .DrawString(ItemText, Me.Font, TextBrush, _
                                  ItemRectangle.Left + RW + RectMargin * 2 + _
                                  TextMargin, ItemRectangle.Top + ( _
                                  ItemRectangle.Height - Me.Font.GetHeight()) / _
                                  2) 'Hier Text schreiben...
                            End If
 
                            'Linie?
                            'If Not mEditComboItem AndAlso ItemIndex = 33 Then
                                '.DrawLine(Pen, ItemRectangle.Left, 
                                ' ItemRectangle.Top + ItemRectangle.Height - 1, 
                                ' ItemRectangle.Left + ItemRectangle.Width, 
                                ' ItemRectangle.Top + ItemRectangle.Height - 1)
                            'End If
                        End With
                    End Using               
                End If
            Catch ex As Exception
                'InfoMeldung( 
                ' System.Reflection.MethodInfo.GetCurrentMethod.DeclaringType.N
                ' ame & "-" & 
                ' System.Reflection.MethodBase.GetCurrentMethod.Name & ": " & 
                ' ex.Message)
            Finally                
                TextBrush.Dispose()
                Pen.Dispose()
            End Try
        End Sub
Schü
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ComboBox - DropDownBackColor Farbe ändern5.599jasmina09.05.12 12:52
Re: ComboBox - DropDownBackColor Farbe ändern3.564CLL09.05.12 15:55
Re: ComboBox - DropDownBackColor Farbe ändern3.469jasmina09.05.12 20:40
Re: ComboBox - DropDownBackColor Farbe ändern3.594Manfred X10.05.12 06:54
Re: ComboBox - DropDownBackColor Farbe ändern3.520jasmina10.05.12 12:08
Re: ComboBox - DropDownBackColor Farbe ändern3.523Schü10.05.12 13:22
Re: ComboBox - DropDownBackColor Farbe ändern3.380Manfred X10.05.12 13:35
Re: ComboBox - DropDownBackColor Farbe ändern3.534jasmina10.05.12 14:05

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel