ListView Items werden doppelt eingetragen

  • C#
  • .NET (FX) 1.0–2.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von King2k7.

    ListView Items werden doppelt eingetragen

    Hallo,
    ich befülle ein ListView mit einer foreach Schleife. Aus einem mir nicht ersichtlichen Grund werden die Einträge doppelt eingetragen.

    Hier ist der Code mit dem ich das ListView befülle.

    C#-Quellcode

    1. string[] ergebniss = s.Split(new string[] { "?" }, StringSplitOptions.RemoveEmptyEntries);
    2. foreach (string item in ergebniss)
    3. {
    4. var lvi = listViewResult.Items.Add(ergebniss[1]);
    5. lvi.Tag = ergebniss[0];
    6. }
    Dein Code ergibt keinen Sinn. Du enumerierst durch die Elemente, verweist innerhalb der Schleife aber auf feste Indices. Das hat zur Folge, dass immer wieder der selbe Wert geadded wird.
    Da ich aus deinem Code nicht rauslesen kann, was das eigentliche Ziel sein soll, sind Korrekturvorschläge reines Rätselraten.
    Das Problem ist. Ich bekomme einen String der z.B. so aussieht. "Word_1?123?Word_2?456".
    Jetzt splite ich den String durch die ?. Will aber das "Word_1" als Itemname und 123 als Itemtag hinzugefügt wird. Setzte ich item ein werden Word_1 und 123 als itemname eingetragen.

    Die frage ist wie sollte ich es dan lösen?
    Da würde ich von foreach Abstand nehmen, mit for lässt sich das viel besser lösen.

    C#-Quellcode

    1. ​for (int i = 0; i < ergebniss.Length; i += 2)
    2. {
    3. var lvi = listViewResult.Items.Add(ergebniss[i]);
    4. lvi.Tag = ergebniss[i + 1];
    5. }

    Vorrausgesetzt das Array besitzt immer ne gerade Anzahl an Items, ansonsten weiß ich nicht, was passieren wird.