none
Nur bestimmte SubItems speichern RRS feed

  • Frage

  • Hallo,

    Wie kann man unter diesem Code hier sagen dass er nur bestimmte SubItems in einer bestimmten Reihenfolge speichert

              	Dim ListViewContent As String = ""
    
                                                For I As Integer = 0 To ListView1.Items.Count - 1
                                                    ListViewContent += ListView1.Items.Item(I).Text & "|"
                                                    For Int As Integer = 0 To ListView1.Items.Item(I).SubItems().Count - 1
                                                        ListViewContent += ListView1.Items.Item(I).SubItems(Int).Text & "|"
                                                    Next
                                                    ListViewContent += vbNewLine
                                                Next
    
                                                System.IO.File.AppendAllText(Speicherpfad, ListViewContent)
                                                System.IO.File.AppendAllText(Speicherpfad, vbNewLine)

     
    Donnerstag, 3. Oktober 2013 14:56

Antworten

  • Dim ListViewContent As String = ""
    
    For I As Integer = 0 To ListView1.Items.Count - 1
        ListViewContent += ListView1.Items.Item(I).Text & "|"
        ListViewContent += ListView1.Items.Item(I).SubItems(0).Text & "|"
        ListViewContent += ListView1.Items.Item(I).SubItems(1).Text & "|"
        ListViewContent += ListView1.Items.Item(I).SubItems(2).Text & "|"
        ListViewContent += vbNewLine
    Next
    
    System.IO.File.AppendAllText(Speicherpfad, ListViewContent)
    System.IO.File.AppendAllText(Speicherpfad, vbNewLine)
    Ich weiß ehrlich gesagt nicht, was daran so schwer ist. Das ist Logik, die man in jedem Programmierbuch im 3. Kapitel kennen lernt...

    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert Tobpy Freitag, 4. Oktober 2013 12:18
    Donnerstag, 3. Oktober 2013 18:34
    Moderator

Alle Antworten

  • Hallo,
    das hängt davon ab, wie du die Items unterscheiden willst. Deine 1. For-Schleife durchläuft alle Elemente. Das musst du anpassen. Ein typisches Szenario ist, nur die Selektierten Elemente zu nutzen. Das könnte so gehen:
            For Each item As ListViewItem In ListView1.SelectedItems
    Wenn du nun noch nach anderen Kriterien aussortieren willst, dann kannst du direkt als erste Anweisung in der Schleife mittels if abfragen ob die Items mit abgespeichert werden sollen.
    Beim Sortieren musst du die Durcharbeitung der Liste entsprechend ändern. Da die Subitems i.d.R. eine Feste Anzahl haben,. kannst du einfach über den Indexer zugreifen. Also lasse die innere Schleife weg und greife einfach so darauf zu:
                s += item.SubItems(1).ToString()
                s += item.SubItems(0).ToString()
                s += item.SubItems(3).ToString()
    Wenn du die Spalten sortierbar machst, dann hat das keine Auswirkung auf den Index.

    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Donnerstag, 3. Oktober 2013 15:23
    Moderator
  • Ich bekomme dass nicht hin ich verstehe nicht wo ich 

               s += item.SubItems(1).ToString()
                s += item.SubItems(0).ToString()
                s += item.SubItems(3).ToString()

    reinpacken soll in eine With schleife ???

    Donnerstag, 3. Oktober 2013 16:33
  • Ich habe den Coide mit absicht nicht so geschrieben, das C&P einfach funktioniert. Überleg mal was mein Code macht und wo du so eine Funktionalität brauchst.

    Eine with-Schleife gibts nicht. Wenn du while meinst, so eine brauchst du hier wahrscheinlich nicht.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Donnerstag, 3. Oktober 2013 16:36
    Moderator
  • Sorry aber ich blicke da nicht so richtig durch


    Donnerstag, 3. Oktober 2013 17:03
  • Dim ListViewContent As String = ""
    
    For I As Integer = 0 To ListView1.Items.Count - 1
        ListViewContent += ListView1.Items.Item(I).Text & "|"
        ListViewContent += ListView1.Items.Item(I).SubItems(0).Text & "|"
        ListViewContent += ListView1.Items.Item(I).SubItems(1).Text & "|"
        ListViewContent += ListView1.Items.Item(I).SubItems(2).Text & "|"
        ListViewContent += vbNewLine
    Next
    
    System.IO.File.AppendAllText(Speicherpfad, ListViewContent)
    System.IO.File.AppendAllText(Speicherpfad, vbNewLine)
    Ich weiß ehrlich gesagt nicht, was daran so schwer ist. Das ist Logik, die man in jedem Programmierbuch im 3. Kapitel kennen lernt...

    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert Tobpy Freitag, 4. Oktober 2013 12:18
    Donnerstag, 3. Oktober 2013 18:34
    Moderator