C# Liste mit Items aus ListView füllen, wie?
Ich probiere eine List<string> mit jedem Item aus einer ListView zu befüllen
leider klappt das nicht.
ich habe es mit einer foreach und for schleife probiert nur geht es nicht, weil ich nicht weiß wie ich jedes Item + Subitem erhalte
Ich habe 7 Columns und die möchte ich als 1 String dann in die Liste hinzufügen.
2 Antworten
Ich hab das jetzt so verstanden, dass du jede Spalte als einen String haben möchtest.
Column = Spalte, Row = Zeile
// Ich nenne das ListView Objekt jetzt mal lv_example
// und das List<string> Objekt list_example
for(int i = 0; i < lv_example.Columns.Count; i++) // für jede Spalte
{
string temp = "";
foreach(ListViewItem row in lv_example.Items) // für jede Zeile
{
temp += row.Subitems[i].Value.ToString(); // i = Spalte
}
list_example.Add(temp);
}
Dann musst du eigentlich nur die beiden Schleifen tauschen
foreach(ListViewItem row in lv_example.Items) // für jede Zeile
{
string temp = "";
for(int i = 0; i < lv_example.Columns.Count; i++) // für jede Spalte
{
temp += row.Subitems[i].Value.ToString(); // i = Spalte
}
list_example.Add(temp);
}
Vielen Dank bis auf
"temp += row.Sub....." funktioniert der Code
Hier erhalte ich einen Fehler
Severity Code Description Project File Line Suppression State
Error CS1061 'ListViewItem.ListViewSubItem' does not contain a definition for 'Value' and no extension method 'Value' accepting a first argument of type 'ListViewItem.ListViewSubItem' could be found (are you missing a using directive or an assembly reference?)
Muss nicht statt Value hier .Text stehen ?
Oh Mist mein Fehler. Die Zeile müsste so lauten:
temp += row.Subitems[i].Text; // i = Spalte
Ja genau, jetzt funktioniert alles. Vielen Dank!
List<string> items = new List<string>();
foreach (ListViewItem itm in listView1.Items)
{
items.Add(itm.ToString());
}
MFG xGlumi
item.ToString( ) gibt allerdings nicht den Inhalt, sondern die Objekt Bezeichnung zurück. Zudem handelt es sich dabei nur um ein ListViewItem (Spalte) und nicht um eine Zelle. An die Zellen kommt man mit ListViewItem.Subitem[index].Value.ToString( )
Nun wird in die Liste folgender String eingefügt "ListViewItem: {Wert}"
das bedeutet also ohne Subitems und leider mit dem Zusatz "ListViewItem", weißt du zufällig wie ich das beheben kann ?
items.Add(itm.ToString());
ersetzen mit
string newItm = "";
for (int i = 0; i < itm.SubItems.Count; i++)
{
newItm += itm.SubItems[i];
}
Musst noch ein Trennzeichen hinzufügen (ich weiss ja nicht, wie du die Spalten voneinander trennen möchtest)
MFG xGlumi
Vielen Dank für das Beispiel.
Habe mich wahrscheinlich etwas blöd ausgedrückt.
Ich habe 7 Spalten und möchte als Endprodukt immer für jede Zeile einen String der alle Felder der 7 Spalten beinhaltet.