一、概述
让listview能够选中一行,可以设置属性:FullRowSelect = true。那么如何获取选中行的信息呢?
ItemSelectionChanged事件和SelectedIndexChanged 事件这两个事件都能实现所需功能。
ItemSelectionChanged事件:
private void OnItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (e.IsSelected)
{
ListViewItem myItem = new ListViewItem();
myItem = listView1.SelectedItems[0];
string str0 = myItem.Text;
string str1 = myItem.SubItems[0].Text;
string str2 = myItem.SubItems[1].Text;
}
}
ListView1_SelectedIndexChanged 事件:
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
ListViewItem myItem = new ListViewItem();
myItem = listView1.SelectedItems[0];//获取选中行
string str0 = myItem.Text;
string str1 = myItem.SubItems[0].Text;
string str2 = myItem.SubItems[1].Text;
}
else return;
}
需要注意的是,用户选择项或取消选择项时此事件会发生两次,一次是针对以前选择的每一项,一次是针对
新选择的项。如果忽略了点击一次Items触发两次该事件很容易出现InvalidArgument=“0”的值对于“index”无效的错误!
所以listView1.SelectedItems.Count > 0可以防止取消选中项时触发事件引发的索引问题。