在 ListView 中,我想获得焦点项目的int位置ID。含义最后选择的项目。
例如:如果我点击第10项,ID应该变为10,但如果我按住CTRL并单击项目20(然后将选择10和20),那么我希望ID变为20。
这是我一直在尝试的,但是当我选择多个项目时会出错:
private void listSub_SelectedIndexChanged(object sender, EventArgs e)
if (listSub.SelectedItems.Count != 0)
{
MessageBox.Show(Convert.ToString(listSub.FocusedItem.Index + 1));
}
}
答案 0 :(得分:2)
如果你想要索引,那么你可以通过
获得它listSub.SelectedIndices[0];
已编辑:如果您已启用Multiselect,那么您将遍历SelectedIndices数组以获取所有内容。
编辑2: ItemSelectionChanged听众,这对我有用......
void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if(e.IsSelected)
MessageBox.Show(e.ItemIndex.ToString());
}
答案 1 :(得分:2)
我可以给你点击的最后一项...你需要添加一个评估是否选中它,但是我在MouseDown处理程序中做了什么:
private void listSub_MouseDown(object sender, MouseEventArgs e)
{
ListViewItem lastClicked = listSub.Items.Cast<ListViewItem>().SingleOrDefault(item => item.Bounds.Contains(e.X, e.Y));
if (lastClicked != null)
{
MessageBox.Show(lastClicked.Index.ToString());
}
}
修改强>
没有Linq:
private void listSub_MouseDown(object sender, MouseEventArgs e)
{
foreach (ListViewItem listViewItem in listSub.Items)
{
if (listViewItem.Bounds.Contains(e.X,e.Y))
{
MessageBox.Show(listViewItem.Index.ToString());
break;
}
}
}