2017-02-02 3 views
1

Ich möchte jeder Zeile in Listview eine Nummer hinzufügen.Hinzufügen von Nummern zur vorhandenen Listenansichtszeile C#

Momentan zähle ich, wie viele Dateien ich in einem Ordner habe, füge diese Nummer zum String-Array hinzu. Dann mit For-Schleife füge ich eine Zahl in diesem Array hinzu und Elemente in Listview hinzufügen.

Aber die Nummer wird nur der ersten Zeile hinzugefügt. enter image description here

Code:

int countFile = Directory.GetFiles(saveAnimePath + "\\Watching", "*.txt").Length; 

       string[] filesCount = new string[countFile]; 

       int number = 0; 
       for (int i = 0; i < filesCount.Length; i++) 
       { 
        number = number + 1; 
        filesCount[i] = number.ToString(); 
       } 

       foreach (var item in filesCount) 
       { 
        lvWatching.Items[0].Text = item; 
       } 

Wie Nummer zu jeder Zeile hinzufügen?

+0

, wie Sie Ihre Listview binden? –

+1

ist dies in Winform-Anwendung? Wo ist der Listenansichtscode? – jjj

+0

@JitendraAanadi Ja, es ist winform. Ssry, um es nicht zu erwähnen. – Bongskie

Antwort

1

Sie müssen für jede Interaktion der Zeilen des Elements ändern in: lvWatching.Items[0].Text = item;

Zum Beispiel:

int countFile = Directory.GetFiles(saveAnimePath + "\\Watching", "*.txt").Length; 

    int number = 0; 
    for (int i = 0; i < filesCount.Length; i++) 
    { 
     number = number + 1; 
     lvWatching.Items[i].Text = number.ToString(); 
    } 
+0

ohh ich bin so dumm :) danke! – Bongskie

1

Das Problem ist, dass Sie in der letzten foreach-Anweisung nur das erste Element in ListView bearbeiten.

Statt foreach, versuchen Sie für die Verwendung, so etwas wie das:

for (var i = 0; i++; i < filesCount) 
{ 
    lvWatching.Items[i].Text = filesCount[i]; 
} 

bearbeiten

Aber ich denke, Ihre Methode viel Aufwand ist. Angenommen, dass Sie in der Liste alle Dateien aus dem Verzeichnis anzeigen, müssen Sie sie nicht erneut abrufen, ihre Anzahl abrufen, Nummern zuweisen usw. Sie könnten einfach durch die Listenelemente iterieren und die richtige Nummer zuweisen.

Die ganze „Zuweisung Zahlen Operation“ würde so ähnlich aussehen:

for (var i = 0; i++; i < lvWatching.Items.Length) 
{ 
    lvWatching.Items[i].Text = i.ToString(); 
} 

Aber ich könnte etwas fehlt, damit es nicht in jeder Situation funktionieren könnte.

+0

ich bin nur dumm:/Danke für die Lösungen !!! – Bongskie

Verwandte Themen