我需要将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
但我无法在列表视图中执行此操作。请帮忙。 感谢
答案 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.SelectedItems
为null
。
因此,您需要先检查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