Listview Anzeige buggy?

  • VB.NET
  • .NET (FX) 4.0

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von razzzer530i.

    Listview Anzeige buggy?

    Hey Leute,

    kurze Frage,
    ich fülle ein ListView-Element (DataGrid möchte ich nicht verwenden)
    mit folgendem Code:

    VB.NET-Quellcode

    1. Public Sub listbf(ByVal ZX As String)
    2. Dim x As String
    3. x = ZX
    4. Form2.ListView1.Items.Clear()
    5. Dim di As New System.IO.DirectoryInfo(x)
    6. If (di.Exists) Then
    7. Dim eint As Integer = 0
    8. For Each fi As System.IO.FileInfo In di.GetFiles("*.pdf", IO.SearchOption.TopDirectoryOnly)
    9. Form2.ListView1.Items.Add(New ListViewItem() With {.Text = fi.Name, .Tag = fi.FullName})
    10. Form2.ListView1.Items(eint).ImageIndex = 0
    11. eint += 1
    12. Next
    13. End If
    14. End Sub


    Allerdings passiert dann das, was auf dem Bild zu sehen ist.
    Wie bekomme ich das hin, dass 2 Spalten richtig gefüllt werden und nicht so eine komische Aufteilung entsteht?

    Hätte die Anzeige gerne so wie bei Windows.

    Grüße :)
    Bilder
    • listview.png

      7,17 kB, 430×281, 267 mal angesehen
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~

    razzzer530i schrieb:

    DataGrid möchte ich nicht verwenden
    Da solltest Du mal lernen, das ein ListView-Item Subitems hat.
    Außerdem ist Dein Zugriff auf die 2. Form suboptimal, das geht in .NET über explizit erstellte Instanzen.
    Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Deinen Tipp hab ich verstanden und setze ihn auch um.

    Dass ein Liestview item subitems hat ist mir bekannt. Ich weiß auch dass ich eine Listview z.b. mit
    Ich will aber eigentlich ja nur erreichen, dass sich die items wenn möglich über 2 zeilen aufteilen.

    Wenn ich jetzt immer unterschiedlich viele dateien habe, ist es doch blöd meine Dateiensätze immer so aufzuteilen, dass die erste Hälfte in column1 und die 2. in column 2 angezeigt wird?

    Liege ich da evtl. falsch?

    LG
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~

    razzzer530i schrieb:

    Wie bekomme ich das hin, dass 2 Spalten richtig gefüllt werden

    razzzer530i schrieb:

    Ich will aber eigentlich ja nur erreichen, dass sich die items wenn möglich über 2 zeilen aufteilen.
    Ja was denn nun?
    So was:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Me.ListView1.View = System.Windows.Forms.View.Details
    3. Dim item1 As New ListViewItem("item1", 0)
    4. item1.SubItems.Add("a")
    5. Dim item2 As New ListViewItem("item2", 1)
    6. item2.SubItems.Add("b")
    7. Dim item3 As New ListViewItem("item3", 0)
    8. item3.SubItems.Add("c")
    9. ListView1.Columns.Add("Column 1", 100, HorizontalAlignment.Left)
    10. ListView1.Columns.Add("Column 2", 100, HorizontalAlignment.Left)
    11. ListView1.Items.AddRange(New ListViewItem() {item1, item2, item3})
    12. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ne nicht so wirklich.

    @RodFromGermany

    Du wirst dich mit den ListView Eigenschaften auskennen.
    Daher beschreibe ich mal ganz genau das Ziel.

    Es werden im ListView alle PDF's eines Ordners angezeigt.
    Leider muss ich auch die ImageList verwenden, da alles so benutzerfreundlich wie möglich sein soll.
    Ich möchte die Anzahl meiner PDF's nicht unbedingt splitten, um sie in 2 Spalten aufzuteilen.
    Listview scheint ja von such aus schon Items nebeneinander zu platzieren.

    Ich möchte also einfach gesagtr folgendes erreichen
    Siehe Bilder
    Bilder
    • listview.png

      7,17 kB, 430×281, 230 mal angesehen
    • listviewrichtig.png

      5,02 kB, 526×137, 236 mal angesehen
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~
    @razzzer530i So was:

    VB.NET-Quellcode

    1. Me.ListView1.View = System.Windows.Forms.View.List
    2. ListView1.Columns.Add("Column 1", 100, HorizontalAlignment.Left)
    3. For i = 1 To 20
    4. Dim item1 As New ListViewItem("item" & i)
    5. item1.SubItems.Add("a")
    6. ListView1.Items.Add(item1)
    7. Next
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Man nehme eine Form, 2 Button und eine ListView:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Me.ListView1.Items.Clear()
    4. Me.ListView1.View = System.Windows.Forms.View.Tile
    5. Me.ListView1.TileSize = New Size(100, 16)
    6. Me.ListView1.Columns.Add("Column 1", 100, HorizontalAlignment.Left)
    7. For i = 1 To 20
    8. Dim item1 As New ListViewItem("item" & i)
    9. item1.SubItems.Add("a")
    10. Me.ListView1.Items.Add(item1)
    11. Next
    12. End Sub
    13. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    14. Me.ListView1.Items.Clear()
    15. Me.ListView1.View = System.Windows.Forms.View.List
    16. Me.ListView1.Columns.Add("Column 1", 100, HorizontalAlignment.Left)
    17. For i = 1 To 20
    18. Dim item1 As New ListViewItem("item" & i)
    19. item1.SubItems.Add("a")
    20. Me.ListView1.Items.Add(item1)
    21. Next
    22. End Sub
    23. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das Listviewrichtig Bild zeigt den Windows Explorer, so wie er Dateien auflistet und darstellt.
    Eure Vorschläge und Ideen haben mich ein gutes Stück weiter gebracht. Werde das ganze heute mal umsetzen und Bericht erstatten.

    LG


    //EDIT

    VB.NET-Quellcode

    1. Me.ListView1.View = System.Windows.Forms.View.List
    2. Me.ListView1.Columns.Add("Column 1", 100, HorizontalAlignment.Left)


    Diese beiden Zeilen haben mein Problem gelöst.
    Habe jetzt auch verstanden, wie genau ich mit dem ListView Objekt arbeiten kann. Danke

    Sollte es jemanden interessieren ist hier mein Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Form2.ListView1.Items.Clear()
    2. Dim di As New System.IO.DirectoryInfo(x)
    3. If (di.Exists) Then
    4. Dim eint As Integer = 0
    5. For Each fi As System.IO.FileInfo In di.GetFiles("*.pdf", IO.SearchOption.TopDirectoryOnly)
    6. Dim listl As New ListViewItem("", 0)
    7. Form2.ListView1.View = System.Windows.Forms.View.List
    8. Form2.ListView1.Columns.Add("Datei", 100, HorizontalAlignment.Left)
    9. Form2.ListView1.Items.Add(New ListViewItem() With {.Text = fi.Name, .Tag = fi.FullName})
    10. Form2.ListView1.Items(eint).ImageIndex = 0
    11. eint += 1
    12. Next
    13. End If

    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~

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