我在列表视图中获取所选行的索引时遇到了一些问题。我想知道为什么这段代码不起作用?我在SelectedIndex下面有一条红线
private void lvRegAnimals_SelectedIndexChanged(object sender, EventArgs e)
{
int index = lvRegAnimals.SelectedIndex;
string specialData = motelManager.GetInfoFromList(index);
UppdateSpecialData(specialData);
}
帮助是预先确定的。谢谢!
编辑:
由于某些奇怪的原因,当我点击listView中的一行时,我收到两条消息!?首先,我得到前一个数字,然后是最后一个单击行的数字。可能有什么不对?
private void lvRegAnimals_SelectedIndexChanged(object sender, EventArgs e)
{
int index = lvRegAnimals.FocusedItem.Index;
MessageBox.Show(Convert.ToString(index));
}
当我添加这样的支票时,它现在正在工作:
if(lvRegAnimals.SelectedIndices.Count > 0)
答案 0 :(得分:12)
由于ListView不包含任何SelectedIndex
,因此属性为SelectedIndices
。
var indices = lvRegAnimals.SelectedIndices;
//indices[0] you can use that to access the first selected index
当MultiSelect属性设置为true时,此属性返回a 包含所选项目的索引的集合 ListView。对于单选ListView,此属性返回一个 包含单个元素的集合,其中包含索引 只有ListView中的选定项目。
答案 1 :(得分:0)
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
// Acquire SelectedItems reference.
var selectedItems = listView1.SelectedItems;
if (selectedItems.Count > 0)
{
// Display text of first item selected.
this.Text = selectedItems[0].Text;
}
else
{
// Display default string.
this.Text = "Empty";
}
}
答案 2 :(得分:0)
尝试:
listView1.FocusedItem.Index
这将为您提供所选行的索引。
答案 3 :(得分:0)
还有另一个像这样的线程,但是又来了。
它可以返回NULL。 SelectedIndexChanged事件也可以是FIRED TWICE。第一次,还没有选择。
所以找到它的唯一安全方法是:
private void lv1_SelectedIndexChanged(object sender, EventArgs e)
{
if (lv1.FocusedItem == null) return;
int p = lv1.FocusedItem.Index;
... now int p具有正确的值......