0

我在用户表单中有一个删除按钮,可以从列表视图中删除所选项目。问题是当没有选择一个项目时(至少它没有突出显示),它会删除第一个项目。我怎么知道是否没有选择任何项目,所以我可以避免删除任何东西?

这是我尝试过的,当没有选择任何内容时,它仍然会删除第一个项目。

Private Sub CommandButtonDelete_Click()
    If Not (ListView1.SelectedItem Is Nothing) Then
       ListView1.ListItems.Remove ListView1.SelectedItem.Index
   End If
End Sub

编辑:

问题似乎是总是有一个项目被选中。那么,新问题,当用户在 listView 之外单击时,如何取消选择该项目?

4

1 回答 1

0

您可以以与确定是否未选择任何内容相同的方式取消选择项目。

例如:

Me.ListBox1.ListIndex = -1

将取消选择在 ListBox1 中选择的任何内容。请注意,这是针对 ListBoxes 的,我没有使用过 ListViews,但我想这同样适用。当然,你需要把它放在某个地方。最简单的地方是把它放进去,Private Sub UserForm_Click()但我不建议这样做,因为任何时候有人在选择后点击用户窗体,它会清除选择。放置它的最佳位置是Private Sub ListBox1_Click(),然后确定被点击的那个是否已经被选中。在这种情况下,您编写代码以取消选择它...

确认这适用于 ListBoxes(不适用于 ListViews):

Private Sub CommandButton1_Click()
    If Not (Me.ListBox1.ListIndex = -1) Then
        Me.ListBox1.RemoveItem (Me.ListBox1.ListIndex)
    End If
End Sub

'Will unselect any selection when user clicks anywhere on the userform (but not on a control ON the userform)
Private Sub UserForm_Click()
    Me.ListBox1.ListIndex = -1
End Sub

Private Sub UserForm_Initialize()
    Me.ListBox1.AddItem "asdf"
    Me.ListBox1.AddItem "basdf"
End Sub
于 2013-08-26T17:20:36.860 回答