Verständnisfrage, Listbox Auflistung

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von samson.

    Dem DataGrid kann man übrigens auch ne List(Of T) als Datasource geben...

    Zum Laden/Aktualisieren müsse das reichen:

    VB.NET-Quellcode

    1. Private Sub LoadFiles()
    2. Dim di = New DirectoryInfo("DeinOrdnerPfad")
    3. DeinDataGridView.DataSource = di.GetFiles("*.*", SearchOption.AllDirectories)
    4. End Sub
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Guten Morgen

    Hab den FileSystemWatcher kurz angeschaut.
    So wie ich das jetzt erkenne, listet FSW dir auch nicht die Dateien auf. FSW ist gut für die Überwachung, sofern sich Änderungen ergeben. Eigenlich ein ideales Tool für Logs.

    Also ich persönlich würde auf den verzichten, und einen Aktualisierungs-Button auf deine Form machen. Jeder der das Programm startet, bekommt die aktuelle Auflistung. Oder ist das Verzeichnis das du nach pdf's durchsuchst so gewaltig gross, dass das Durchsuchen so viel Zeit in Anspruch nimmt?

    Bleib doch bei der ListViewausführung, hast alle Funktionen die benötigt werden oben. Dir bleiben zwei Möglichkeiten.
    Du kannst die ListView-ColumnHeader selber designern, oder du machst es mit dem Code. Zweiteres habe ich dir oben als Funktionen gegeben. Musst sie nur noch benutzen und klein wenig anpassen.

    So sieht es dann aus:


    Und so könnte es mit der ContextMenuStrip aussehen



    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „exc-jdbi“ ()

    Nochmal vielen Dank an alle Beteiligten!!!

    So habe ich es nun Umgesetzt und es geht.
    Wer es brauchen kann, darf es gerne kopieren.



    Spoiler anzeigen

    Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. FileSystemWatcher.Path = My.Settings.CheckFolder
    5. If FileSystemWatcher.Path = "" Then
    6. FolderBrowserDialog1.ShowDialog()
    7. If FolderBrowserDialog1.SelectedPath = "" Then
    8. MessageBox.Show("Keine Pfad ausgewählt, Programm wird beendet!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information)
    9. Application.Exit()
    10. Else
    11. My.Settings.CheckFolder = FolderBrowserDialog1.SelectedPath
    12. ToolStripStatusLabel2.Text = My.Settings.CheckFolder
    13. FileSystemWatcher.Path = FolderBrowserDialog1.SelectedPath
    14. MessageBox.Show("gewählter Pfad: " & FolderBrowserDialog1.SelectedPath, "Info", MessageBoxButtons.OK, MessageBoxIcon.Information)
    15. ToolStripStatusLabel2.Text = FileSystemWatcher.Path
    16. End If
    17. End If
    18. listfiles()
    19. End Sub
    20. Private Function listfiles()
    21. LvMain.Items.Clear()
    22. Dim fi() = New DirectoryInfo(My.Settings.CheckFolder).GetFiles("*.pdf", SearchOption.TopDirectoryOnly)
    23. For Each Datei As String In My.Computer.FileSystem.GetFiles(My.Settings.CheckFolder, FileIO.SearchOption.SearchTopLevelOnly)
    24. Dim datum As New IO.FileInfo(Datei)
    25. Dim LastWriteDate As Date = datum.LastWriteTime
    26. LvMain.Items.Add(Datei.Replace(My.Settings.CheckFolder & "\", "")).SubItems.Add(LastWriteDate.ToShortDateString)
    27. Next
    28. ToolStripStatusLabel5.Text = "Anzahl Dateien: " & System.IO.Directory.GetFiles(My.Settings.CheckFolder).Length '//Anzahl der Dateien
    29. ToolStripStatusLabel2.Text = FileSystemWatcher.Path
    30. End Function
    31. Private Sub PfadAuswählenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PfadAuswählenToolStripMenuItem.Click
    32. FolderBrowserDialog1.ShowDialog()
    33. If FolderBrowserDialog1.SelectedPath = "" Then
    34. MessageBox.Show("Keine Pfad gewählt", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information)
    35. Else
    36. FileSystemWatcher.Path = FolderBrowserDialog1.SelectedPath
    37. My.Settings.CheckFolder = FolderBrowserDialog1.SelectedPath
    38. listfiles()
    39. End If
    40. End Sub
    41. Private Sub BeendenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BeendenToolStripMenuItem.Click
    42. Application.Exit()
    43. End Sub
    44. Private Sub Timer_Zeit_Tick(sender As Object, e As EventArgs) Handles Timer_Zeit.Tick
    45. ToolStripStatusLabel3.Text = Now.ToShortTimeString()
    46. ToolStripStatusLabel4.Text = Now.ToShortDateString()
    47. End Sub
    48. Private Sub FileSystemWatcher1_Created(sender As Object, e As FileSystemEventArgs) Handles FileSystemWatcher.Created
    49. listfiles()
    50. End Sub
    51. Private Sub FileSystemWatcher1_Deleted(sender As Object, e As FileSystemEventArgs) Handles FileSystemWatcher.Deleted
    52. listfiles()
    53. End Sub
    54. Private Sub FileSystemWatcher1_Renamed(sender As Object, e As RenamedEventArgs) Handles FileSystemWatcher.Renamed
    55. listfiles()
    56. End Sub
    57. Private Sub LvMain_DoubleClick(sender As Object, e As EventArgs) Handles LvMain.DoubleClick
    58. Process.Start(My.Settings.CheckFolder & "\" & LvMain.SelectedItems.Item(0).Text)
    59. End Sub
    60. Private Sub LvMain_ColumnClick(sender As Object, e As ColumnClickEventArgs) Handles LvMain.ColumnClick
    61. If e.Column = cmpFileListViewComparer.SortColumn Then
    62. If cmpFileListViewComparer.SortOrder = SortOrder.Ascending Then
    63. cmpFileListViewComparer.SortOrder = SortOrder.Descending
    64. Else
    65. cmpFileListViewComparer.SortOrder = SortOrder.Ascending
    66. End If
    67. Else
    68. cmpFileListViewComparer.SortOrder = SortOrder.Ascending
    69. End If
    70. cmpFileListViewComparer.SortColumn = e.Column
    71. LvMain.Sort()
    72. End Sub
    73. Public Class ListViewComparer
    74. Implements IComparer
    75. Private intColumn As Integer
    76. Private soSortOrder As SortOrder
    77. Private cicComparer As CaseInsensitiveComparer
    78. Public Sub New(ByVal ParentListView As ListView)
    79. intColumn = 0
    80. soSortOrder = SortOrder.None
    81. cicComparer = New CaseInsensitiveComparer()
    82. ParentListView.ListViewItemSorter = Me
    83. End Sub
    84. Public Property SortOrder() As SortOrder
    85. Get
    86. Return soSortOrder
    87. End Get
    88. Set(ByVal value As SortOrder)
    89. soSortOrder = value
    90. End Set
    91. End Property
    92. Public Property SortColumn() As Integer
    93. Get
    94. Return intColumn
    95. End Get
    96. Set(ByVal value As Integer)
    97. intColumn = value
    98. End Set
    99. End Property
    100. Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
    101. Dim compareResult As Integer
    102. Dim listviewX As ListViewItem, listviewY As ListViewItem
    103. listviewX = CType(x, ListViewItem)
    104. listviewY = CType(y, ListViewItem)
    105. compareResult = cicComparer.Compare(listviewX.SubItems(intColumn).Text, listviewY.SubItems(intColumn).Text)
    106. If soSortOrder = SortOrder.Ascending Then
    107. Return compareResult
    108. ElseIf soSortOrder = SortOrder.Descending Then
    109. Return compareResult * -1
    110. Else
    111. Return 0
    112. End If
    113. End Function
    114. End Class
    115. Private cmpFileListViewComparer As ListViewComparer
    116. Public Sub New()
    117. ' This call is required by the Windows Form Designer.
    118. InitializeComponent()
    119. ' Add any initialization after the InitializeComponent() call.
    120. cmpFileListViewComparer = New ListViewComparer(LvMain)
    121. End Sub
    122. End Class


    Speziellen Dank auch an @Igibob für die Beschreibung zum Sorting !
    Nein! Doch! OHH!