在 VB.Net 中将 ListView 属性 FocusedItem 设置为 "Nothing"

Setting ListView Property FocusedItem to "Nothing" in VB.Net

此 Sub 应该删除 "Selected/Focused" ListView 索引处的数据行(项目和子项目)。它可以工作,但是在删除 selected 行之后,焦点仍然位于刚刚删除的行的索引上。

现在当前的焦点索引包含一行新数据。我需要“ListView1.FocusedItem”重置为“Nothing”以使用户手动 select "Remove" 按钮之前的 listView 将删除任何内容。

就像现在一样,在第一行被 select 编辑并删除后,您可以继续单击 "Remove" 按钮,它将保留删除行直到 ListView 为空。

    Private Sub btn_Remove_Click(sender As Object, e As EventArgs) Handles btn_Remove.Click

        If IsNothing(Me.ListView1.FocusedItem) Then
            MessageBox.Show("Please select an Item from the grocery list to be removed.")
        ElseIf ListView1.SelectedItems.Count <= 0 Then
            Me.ListView1.Items.RemoveAt(Me.ListView1.FocusedItem.Index)
            ' Need ListView1.FocusedItem to reset to "Nothing" here <<--------------------
        Else
            MessageBox.Show("There are no Items on the grocery list to be removed.")
        End If

End Sub

您不能选择任何内容:

ListView1.SelectedItems.Clear()

正在将 "ListView1.FocusedItem.Focused" 设置为 "False" 似乎解决了我的问题。我添加了一个包含“ListView1.FocusedItem.Focused = False”的 if 语句。现在,当单击“删除”按钮并且没有在 ListView 中手动选择项目时,“Me.ListView1.FocusedItem“ 没什么。这是工作代码:

   Private Sub btn_Remove_Click(sender As Object, e As EventArgs) Handles btn_Remove.Click

    If IsNothing(Me.ListView1.FocusedItem) Then
        MessageBox.Show("There are no Items selected to be removed from the grocery list.")

    ElseIf ListView1.SelectedItems.Count >= 0 Then
        Me.ListView1.Items.RemoveAt(Me.ListView1.FocusedItem.Index)

        If ListView1.Items.Count > 0 Then
            ListView1.FocusedItem.Focused = False
        End If

    Else
        MessageBox.Show("An Error has halted thid process")
    End If

End Sub