Dynamische DropDownItems Bilder zuweisen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von djmatrix1987.

    Dynamische DropDownItems Bilder zuweisen

    Hallo Liebe Community,

    ich stehe vor nem problem und zwar rufe ich über ein webclient einen string ab, den ich mit splitchar in einer schleife laufen lasse um somit mein menustripe aufzufüllen. Funktioniert auch wunderbar. So :) Der string enthält am anfang entweder eine 0 oder eine 1. Diese prüfe ich mittels einer if bedingung. Nun will ich falls 1 raus kommt Bild 1 in das jeweilig dropdownitem packen und wenn 0 dann halt bild 2.

    So sieht bisher die schleife aus:

    VB.NET-Quellcode

    1. For Each pc As String In response.Split(SplitChar)
    2. If pc = "" Then
    3. Else
    4. Menu2.DropDownItems.Add(pc)
    5. If Mid(pc, 1, 1) = "1" Then
    6. Else
    7. End If
    8. End If
    9. Next


    ICh hab schon viel geschaut nur weis ich nicht wie ich dem dropdownitem ein bild zuweisen kann. Wenn ich so das menu erstellen würde, gehts ja leicht. Image -> auswählen, feritg.
    Nur wie geht das bei dynamisch erzeugten dropdownitems?

    Mfg
    Ben
    Hallo,

    Ich bin mir nicht sicher ob das mit den Bordmitteln vom DropDown überhaupt möglich ist. Notfalls ein eigenes Control erstellen, das vom DropDown erbt.

    Edit: Hab grade an eine ComboBox gedacht, sorry

    Aber ich schau mir das mal in der IDE an, vielleicht geht ja doch was.

    PS: Mid ist eine VB6 Methode, also veraltet. Benutze lieber pc.Substring oder falls 1 bzw. 0 nur einmal vorkommt, pc.Contains("1)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Knekke“ ()

    Danke für den Hinweis und die Mühe :)

    Hab das mal fix geändert :D komm leider aus der VB 6 Zeit :)

    VB.NET-Quellcode

    1. For Each pc As String In response.Split(SplitChar)
    2. If pc = "" Then
    3. Else
    4. Menu2.DropDownItems.Add(pc)
    5. If pc.Substring(1, 1) = "1" Then
    6. Else
    7. End If
    8. End If
    9. Next


    So solltes richtig sein :)


    ok also wennn ich dropdownitem im menu erstelle kann ich es ganz leicht mit men.dropdownid.image = my.resou..... einbinden.

    Man müsste irgendwie in die schleife eine abfrage machen, wie der name von Menu2.DropDownItems.Add(pc) lautet. Dann könnte man Ihn danach direkt ansprechen. Blos wie?!

    VB.NET-Quellcode

    1. Menu2.DropDownItems.Add(pc)
    2. Menu2.DropDownItems.Item(ID VON Menu2.DropDownItems.Add(pc)).Image = My.Resources.image


    Edit by der_Kurt:
    Bitte keine Doppelposts. Es gibt eine Bearbeiten-Funktion.
    * Beiträge zusammengefügt *

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()

    VB.NET-Quellcode

    1. For Each dr As DropDownItem In Menu2.DropDownItems
    2. If dr.Name = "DerNameVomItem" Then
    3. dr.Image = My.Resources.imageBla
    4. End If
    5. Next


    So in der Richtung müsste es gehen. Leider weiß ich nicht von welchem Datentyp die Collection DropDownItems ist, da ich grade nicht nachsehen kann. Gegebenfalls anpassen.
    Mhh. Also es handelt sich um eine MenuStripe. Die If bedingung wird leider nichts bringen, da ich nicht weiß, welche Datensätze nun rein kommen. Der Name Variiert leider. Gibt es denn eine möglichkeit, die gerade eingetragene ID von Menu2.DropDownItems.Add(pc) herauszubekommen? die könnte ich dann einfach dazu benutzen: Menu2.DropDownItems.Item(ID).Image = My.Resources.Image

    Oder noch besser wie kann man die letzte ID herausbekommen, sprich ich füge ja was unten an. Nun bräuchte ich nur noch das zuletzt eingefügte und davon die ID.
    Ich habe die zweite Methode genommen und leider sagt er mir da, das er die function length nnicht finden kann. "Length" ist kein Member von System.Windows.Forms.ToolStripeItemCollection.

    Habe das nun etwas geändert. Kommen keine Fehler aber leider wird auch kein bild angezeigt.

    VB.NET-Quellcode

    1. For Each pc As String In response.Split(SplitChar)
    2. If pc = "" Then
    3. Else
    4. Menu2.DropDownItems.Add(pc)
    5. Dim id As Integer = Menu2.DropDownItems.Count
    6. If pc.Substring(1, 1) = "1" Then
    7. Menu2.DropDownItems.Item(id).Image = My.Resources.online
    8. Else
    9. Menu2.DropDownItems.Item(id).Image = My.Resources.offline
    10. End If
    11. End If
    12. Next