我想从列表框中删除多个选定的文件,但是当选择多个项目时,只会删除一个文件。
代码如下
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循环的形式不正确。
答案 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