.NET从列表框中删除多个文件

时间:2017-10-01 13:21:58

标签: vb.net multiple-files

我想从列表框中删除多个选定的文件,但是当选择多个项目时,只会删除一个文件。

代码如下

Dim dialog As DialogResult
dialog = MsgBox("Delete Forever?", MsgBoxStyle.YesNoCancel)

If dialog = MsgBoxResult.Yes Then
    For i As Integer = (ListBox1.SelectedItems.Count - 1) To 0 Step -1
        FileSystem.DeleteFile(ListBox1.Items(ListBox1.SelectedIndex).ToString(), UIOption.AllDialogs, RecycleOption.DeletePermanently)
        ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
    Next
Else
    MessageBox.Show("Not Deleted!")
End If

我确实认为for循环的形式不正确。

1 个答案:

答案 0 :(得分:1)

首先,轻松的事情,检查事先选择的东西。这只是你的嵌套代码,我发现它让我专注于我需要注意的事情。

接下来,迭代选定的项目可能更容易,而不是选择索引。意思是这样的(这是伪代码,所以它可能实际上没有编译)

For Each item In ListBox1.SelectedItems
   FileSystem.DeleteFile(item.ToString(), UIOption.AllDialogs, RecycleOption.DeletePermanently)
   ListBox1.Items.Remove(item)
Next

所以把这些东西放在一起,这会把你的代码改成这样的东西(也是伪代码,而不是检查)

If ListBox1.SelectedItems.Count = 0 Then
    MessageBox.Show("Nothing Selected!")
End If

Dim dialog As DialogResult
dialog = MsgBox("Delete Forever?", MsgBoxStyle.YesNoCancel)
If dialog <> MsgBoxResult.Yes Then Return

For Each item In ListBox1.SelectedItems
   FileSystem.DeleteFile(item.ToString(), UIOption.AllDialogs, RecycleOption.DeletePermanently)
   ListBox1.Items.Remove(item)
Next