Combobox nach zahl farbe Ändern

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von ff-mothe.

    Kappier die Frage nicht ganz.
    Meinst du mit ausfüllen die BackColor? Was meinst mit Zahlen? Die einzelnen Items?
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Gug mal hier.
    Hilft dir vielleicht weiter.
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    ah
    aber geht es auch leichter
    weil ich möchte nur das status 1 und status 2 usw. eine eigene farbe bekommen ausgefüllt

    so sieht es aus:
    Bilder
    • Status.jpg

      22,68 kB, 459×387, 563 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ff-mothe“ ()

    Den Code kannst du doch so ändern das wenn Status 1 im Item steht, dass dann z.B. die Hintergrundfarbe blau wird.
    Wenn Status 2 im Item ist dann soll rot als Hintergrundfarbe gewählt werden usw...
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Wie ist der Inhalt der Combobox? Ändert er sich, oder bleibt er immer gleich?
    Hab ich das richtig verstanden?
    Nicht jede Combobox soll eine eigene Farbe bekommen sondern jeder Eintrag der Comboboxen?
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Jede Combobox DrawMode auf OwnerDrawFixed setzen und den Code bei jeder Combobox in die DrawItem-Methode einfügen.

    VB.NET-Quellcode

    1. ' ComboBox-Eintrag
    2. Dim sItem As String = ComboBox1.Items(e.Index)
    3. ' Hintergrundfarbe
    4. If (e.State And DrawItemState.HotLight) Or (e.State And DrawItemState.Selected) Then
    5. ' wenn Eintrag selektiert, Standard-Hintergrundfarbe für
    6. ' den Selektionsbalken verwenden
    7. e.DrawBackground()
    8. Else
    9. ' wenn Eintrag nicht selektiert, abwechselnde Hintergrundfarbe
    10. Dim nColor As Color
    11. If e.Index = 0 Or e.Index = 1 Or e.Index = 2 Or e.Index = 3 Then
    12. nColor = Color.Red
    13. ElseIf e.Index = 4 Or e.Index = 5 Or e.Index = 6 Then
    14. nColor = Color.Yellow
    15. ElseIf e.Index = 7 Or e.Index = 8 Then
    16. nColor = Color.Green
    17. End If
    18. e.Graphics.FillRectangle(New SolidBrush(nColor), e.Bounds)
    19. End If
    20. ' Text ausgeben
    21. e.Graphics.DrawString(sItem, e.Font, New SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y)


    und Beschreibe dein Problem nächstes mal besser, bzw drück dich mal deutlicher aus...
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Warum so Kompliziert?
    Ich habe das nun so verstanden das er einfach nur die Farbe der Schrift ändern möchte.
    Das ganze ins SelectChanged Ereigniss.

    VB.NET-Quellcode

    1. If ComboBox.SelectedIndex >= 0 Then
    2. Select Case SelectedIndex.Index
    3. Case 0, 1, 2, 3
    4. ComboBox.ForeColor = Color.Red
    5. Case 4, 5, 6
    6. ComboBox.ForeColor = Color.Yellow
    7. Case Else
    8. ComboBox.ForeColor = Color.Green
    9. End Select
    10. End If
    Es geht um die Hintergrundfarbe jedes Items...
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Dein Code funktioniert bei mir nicht.
    Was meinst du mit SelectChanged? Die SelectedIndexChanged-Methode?
    Und SelectedIndex.Index ist nicht deklariert.
    Außerdem möchte er es ja beim Programmstart direkt anzeigen, nicht erst wenn man den Item ändert.
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Hmm seh grad ich da ein wenig verschoben hab ^^
    Hier korrigiert:

    VB.NET-Quellcode

    1. If ComboBox.SelectedIndex >= 0 Then
    2. Select Case ComboBox.SelectedIndex
    3. Case 0, 1, 2, 3
    4. ComboBox.ForeColor = Color.Red
    5. Case 4, 5, 6
    6. ComboBox.ForeColor = Color.Yellow
    7. Case Else
    8. ComboBox.ForeColor = Color.Green
    9. End Select
    10. End If


    Außerdem möchte er es ja beim Programmstart direkt anzeigen, nicht erst wenn man den Item ändert.
    Das ist geraten.
    Denn das hat er nicht gesagt.

    Und wenn du dir mal eine ComboBox aufs Form ziehst, diese mit Items füllst und das ganze compillierst wirst du sehen das im default nix ausgewählt ist.
    Also SelectetIndex = -1
    jeder combobox hat das gleich Items von Status 1-9
    Status von 1-9
    Combobox 1-18
    1-4 Rot
    5-7 Geld
    8-9 Grün
    Heist für mich das er das beim Start will.
    Bei deinem Beispiel wird bei jedem Item die gleiche BackColor gezeigt. Und die ändern sich erst wenn man den Item ändert.
    Bei meinem Beispiel sind die Farben gleich zu sehen und Unterschiedlich, so wie er gemeint hat.
    Ich denke mal er benötigt das (durch die Farben rot, gelb, grün) um schlecht, mittel und gut anzuzeigen.
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Du (er) mein(s)t den Hintergrund von dem Popup der ComboBox :rolleyes:

    Gut das geht dann mit meiner Methode nicht das ist schon klar.

    Aber bei 18 Boxen würde ich das ganze eh ein eine eigene Prozedur extrahieren und im aufruf die Box übergeben :D

    Und bei deinem Beispiel wäre die Variante mit Select Case auch die schönere 8-)
    Jo, das muss er ja dann wissen :D
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Und wo ist das jetzt das Problem?

    T1g0r hat doch die Lösung gepostet und ich hab noch den Tipp gegeben es auszu lagern.
    Irgendwie hab ich das gefühl das du nun was fertiges von uns hier erwartest was du per copy & paste rein werfen kannst.
    Ein bisschen selbständigkeit ist eigentlich schon angebracht von deiner Seite.

    Aber gut hier die fertige Lösung (ein Mix aus T1g0rs und meinen Vorschlägen):

    VB.NET-Quellcode

    1. Private Sub ComboBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
    2. ColorChange(sender, e) ' das ein bei jeder combobox ins DrawItem Ereigniss
    3. End Sub
    4. Private Sub ColorChange(ByRef ComboBox As System.Object, ByRef e As System.Windows.Forms.DrawItemEventArgs)
    5. ' ComboBox-Eintrag
    6. Dim sItem As String = ComboBox.Items(e.Index)
    7. ' Hintergrundfarbe
    8. If (e.State And DrawItemState.HotLight) Or (e.State And DrawItemState.Selected) Then
    9. ' wenn Eintrag selektiert, Standard-Hintergrundfarbe für
    10. ' den Selektionsbalken verwenden
    11. e.DrawBackground()
    12. Else
    13. ' wenn Eintrag nicht selektiert, abwechselnde Hintergrundfarbe
    14. Dim nColor As Color
    15. Select Case e.Index
    16. Case 0, 1, 2, 3
    17. nColor = Color.Red
    18. Case 4, 5, 6
    19. nColor = Color.Yellow
    20. Case 7, 8
    21. nColor = Color.Green
    22. End Select
    23. e.Graphics.FillRectangle(New SolidBrush(nColor), e.Bounds)
    24. End If
    25. ' Text ausgeben
    26. e.Graphics.DrawString(sItem, e.Font, New SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y)
    27. End Sub


    Und DrawMode : OwnerDrawFixed setzten nicht vergessen.
    Bilder
    • Unbenannt.jpg

      4,86 kB, 163×246, 414 mal angesehen