从listview中选择索引

时间:2012-07-04 07:37:08

标签: c#

我在列表视图中获取所选行的索引时遇到了一些问题。我想知道为什么这段代码不起作用?我在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)

4 个答案:

答案 0 :(得分:12)

由于ListView不包含任何SelectedIndex,因此属性为SelectedIndices

var indices = lvRegAnimals.SelectedIndices;
//indices[0] you can use that to access the first selected index

ListView.SelectedIndices

  

当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具有正确的值......