2

我在获取列表视图中选定行的索引时遇到了一些问题。我想知道为什么这段代码不起作用?我在 SelectedIndex 下方看到一条红线

    private void lvRegAnimals_SelectedIndexChanged(object sender, EventArgs e)
    {
        int index = lvRegAnimals.SelectedIndex;
        string specialData = motelManager.GetInfoFromList(index);
        UppdateSpecialData(specialData);
    }

帮助是preciated。谢谢!

编辑:

出于某种奇怪的原因,当我单击 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

5 回答 5

12

因为ListView不包含任何SelectedIndex,而是有一个SelectedIndices.

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

ListView.SelectedIndices

当 MultiSelect 属性设置为 true 时,此属性返回一个集合,其中包含在 ListView 中选择的所有项目的索引。对于单选 ListView,此属性返回一个包含单个元素的集合,该元素包含 ListView 中唯一选定项的索引。

于 2012-07-04T07:39:00.350 回答
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";
        }
    }
于 2012-07-04T07:46:40.523 回答
0

ListView 有时使用起来很麻烦。我使用的一个简单解决方案是检查所选项目的 for 循环。

我已将我的解决方案放在 ListView 中的“当索引更改触发器”中。例子:

int sel_item = 0; //an int to store the selected item index.
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
      for (int i = 0; i < listView1.Items.Count; i++)
      {
             if (listView1.Items[i].Selected == true)
             {
              sel_item = i;
             }
      }
}

这当然只能在“多选”选项设置为false.

于 2022-02-27T19:11:33.007 回答
0

还有另一个像这样的线程,但它又来了。

它可以返回 NULL。SelectedIndexChanged 事件也可以被触发两次。第一次,还没有任何选择。

所以找到它的唯一安全方法是这样的:

    private void lv1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (lv1.FocusedItem == null) return;
        int p = lv1.FocusedItem.Index;

...现在 int p 具有正确的值...

于 2017-06-04T18:05:06.333 回答
0

尝试 :

listView1.FocusedItem.Index

这将为您提供所选行的索引。

于 2016-03-01T06:04:44.683 回答