使用向上/向下键获取ListView的值

时间:2012-03-07 10:44:50

标签: vb.net

我需要将ItemCode的值存储在ListView的coloumn 0处。 在click事件中使用以下代码,它可以正常工作

vrEditProductCode = lvVendors.SelectedItems.Item(0).SubItems.Item(0).Text

selectedindex changed event中的相同代码导致index out of range exception

请告知如何修复它。我希望用户在按下向上/向下箭头键时获得此值。 在datagridview中,我们可以像

那样做
vrItemCode=dgvOne.item(0,dgvitem.currentrow.index).value

但我无法在列表视图中执行此操作。请帮忙。 感谢

3 个答案:

答案 0 :(得分:0)

这段代码如何:

Private Sub ListView1_ItemSelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles    ListView1.ItemSelectionChanged
        Debug.WriteLine(e.ItemIndex)
        Debug.WriteLine(e.Item.Text)
End Sub

这可以让您记录已选择的项目。

我建议使用ItemSelectionChanged而不是IndexChanged,因为它更合适,更易于使用,主要是因为您获得了更精确的EventArg,特别是System.Windows.Forms.ListViewItemSelectionChangedEventArgs }

答案 1 :(得分:0)

因为ListView首先取消选择旧选择lvVendors.SelectedItemsnull

因此,您需要先检查SelectedItems != null

VB.NET:

If lvVendors.SelectedItems IsNot Nothing AndAlso lvVendors.SelectedItems.Count <> 0 Then
    Dim vrEditProductCode As String = lvVendors.SelectedItems.Item(0).SubItems.Item(0).Text
End If

C#:

if (lvVendors.SelectedItems != null && lvVendors.SelectedItems.Count!=0)
{
    string vrEditProductCode = lvVendors.SelectedItems.Item[0].SubItems.Item[0].Text;
}

答案 2 :(得分:0)

也许你可以使用它:

Private Sub lvSearch_KeyDown(ByVal sender As Object,ByVal e As System.Windows.Forms.KeyEventArgs)处理lvSearch.KeyDown         如果e.KeyCode = Keys.Down那么

        If lvSearch.SelectedItems(0).Index < (lvSearch.Items.Count - 1) Then

            txtName.Text = lvSearch.Items(lvSearch.SelectedItems(0).Index + 1).SubItems(1).Text

        End If
    End If
End Sub

Private Sub lvSearch_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles lvSearch.KeyUp
    If e.KeyCode = Keys.Up Then
        If lvSearch.SelectedItems(0).Index >= 0 Then

            txtName.Text = lvSearch.Items(lvSearch.SelectedItems(0).Index).SubItems(1).Text

        End If
    End If
End Sub