ListView File delete

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Pixxxas.

    ListView File delete

    Guten Tag, ich kann ich am besten die selektierten Dateien im ListView Löschen? Mit Löschen meine ich, vom PC Löschen.
    Mfg

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private _LastSelectedFolder As String = String.Empty
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Using dlg As New FolderBrowserDialog
    5. With dlg
    6. .Description = "Verzeichnis auswählen..."
    7. .ShowNewFolderButton = False
    8. .SelectedPath = _LastSelectedFolder
    9. .RootFolder = Environment.SpecialFolder.MyComputer
    10. If .ShowDialog = Windows.Forms.DialogResult.OK Then
    11. Try
    12. _LastSelectedFolder = .SelectedPath
    13. Me.ShowFileList(.SelectedPath & "\oxide\data", ListView1, ImageList1)
    14. Catch ex As Exception
    15. MessageBox.Show(ex.Message)
    16. End Try
    17. End If
    18. End With
    19. End Using
    20. End Sub
    21. Private Sub ListView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DoubleClick
    22. With DirectCast(sender, ListView)
    23. If .FocusedItem IsNot Nothing Then
    24. Dim locFi As IO.FileInfo = CType(.FocusedItem.Tag, IO.FileInfo)
    25. Process.Start(locFi.FullName)
    26. locFi = Nothing
    27. End If
    28. End With
    29. End Sub
    30. Private Sub ListView1_ItemSelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles ListView1.ItemSelectionChanged
    31. If e.IsSelected Then
    32. ToolStripStatusLabel1.Text = DirectCast(e.Item.Tag, IO.FileInfo).FullName
    33. Else
    34. ToolStripStatusLabel1.Text = String.Empty
    35. End If
    36. End Sub
    37. Private Sub ShowFileList(ByVal folder As String, ByVal ltv As ListView, ByVal imgList As ImageList)
    38. If String.IsNullOrEmpty(folder) Then Throw New ArgumentNullException("Path")
    39. Dim locDirInfo As IO.DirectoryInfo = Nothing
    40. Dim locLtvItem As ListViewItem = Nothing
    41. With ltv
    42. Try
    43. .BeginUpdate()
    44. .Items.Clear()
    45. .Columns.Clear()
    46. .Columns.Add("Dateiname", 100, HorizontalAlignment.Left)
    47. .Columns.Add("Größe (Bytes)", 100, HorizontalAlignment.Right)
    48. .Columns.Add("Typ", 100, HorizontalAlignment.Left)
    49. .Columns.Add("Letzte Änderung", 120, HorizontalAlignment.Left)
    50. .GridLines = True
    51. .FullRowSelect = True
    52. .MultiSelect = True
    53. .View = View.Details
    54. .CheckBoxes = True
    55. imgList.Images.Clear()
    56. .SmallImageList = imgList
    57. locDirInfo = New IO.DirectoryInfo(folder)
    58. If Not locDirInfo.Exists Then Throw New IO.DirectoryNotFoundException
    59. For Each locFi As IO.FileInfo In locDirInfo.GetFiles("*.*", IO.SearchOption.AllDirectories)
    60. If Not imgList.Images.ContainsKey(locFi.Extension) Then
    61. imgList.Images.Add(locFi.Extension, Icon.ExtractAssociatedIcon(locFi.FullName))
    62. End If
    63. locLtvItem = New ListViewItem(New String() {locFi.Name,
    64. locFi.Length.ToString("n"),
    65. locFi.Extension,
    66. locFi.LastAccessTime.ToString})
    67. locLtvItem.Tag = locFi
    68. locLtvItem.ImageKey = locFi.Extension
    69. .Items.Add(locLtvItem)
    70. Next
    71. Catch ex As Exception
    72. Throw ex
    73. Finally
    74. .EndUpdate()
    75. locDirInfo = Nothing
    76. locLtvItem = Nothing
    77. End Try
    78. End With
    79. End Sub
    80. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    81. Try
    82. Dim I As Integer
    83. If ListView1.CheckedItems.Count = 0 Then
    84. For I = 0 To ListView1.Items.Count - 1
    85. Next
    86. Else
    87. For I = 0 To ListView1.CheckedItems.Count - 1
    88. Next
    89. End If
    90. Catch ex As Exception
    91. MessageBox.Show(ex.Message)
    92. End Try
    93. End Sub
    94. 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!
    Check das irgendwie nicht so ganz :/ Kannst du mir bitte ein Beispiel geben?

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. Try
    3. Dim I As Integer
    4. If ListView1.CheckedItems.Count = 0 Then
    5. For I = 0 To ListView1.Items.Count - 1
    6. Next
    7. Else
    8. For I = 0 To ListView1.CheckedItems.Count - 1
    9. Next
    10. End If
    11. Catch ex As Exception
    12. MessageBox.Show(ex.Message)
    13. End Try
    14. End Sub

    Pixxxas schrieb:

    Kannst du mir bitte ein Beispiel geben?
    Kennst Du Deinen eigenen von Dir selbst geschriebenen Code nicht?
    Du befüllst doch Deine ListView mit Elementen einer FileInfo. Mache aus den Elementen der selektierten Zeile wieder eine FileInfo-Instanz und feddich.
    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!

    VB.NET-Quellcode

    1. Else
    2. For I = 0 To ListView1.CheckedItems.Count - 1
    3. Dim locFi As IO.FileInfo = CType(ListView1.FocusedItem.Tag, IO.FileInfo)
    4. locFi.Delete()
    5. Next
    6. End If

    So Löscht er nur das Fokussierte Item und nicht die, die mit der Checkbox = true sind.

    VB.NET-Quellcode

    1. ​Dim locFi As IO.FileInfo = CType(ListView1.CheckedItems.Tag, IO.FileInfo)

    Sowas geht ja nicht.
    Wieso denn Dim locFi As IO.FileInfo = CType(ListView1.FocusedItem.Tag, IO.FileInfo)?!?
    Nimm doch ListView1.CheckedItems(i)!
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.