1

我在另一个线程中有一个列表视图,我以安全的线程安全方式向其中添加项目,如下所示:

listView1.Invoke(new AddTolstDiscoveredDevices(AddDiscoveryEntry), ReceiveString);

但是当我试图获取选定的项目时,它说索引0无效。

我用这个:

string IpAdr = listView1.SelectedItems[0].SubItems[0].Text;

错误 ="InvalidArgument=Value of '0' is not valid for 'index'.\r\nParameter name: index"

然后因为它在另一个线程上,我试图这样调用:

 public string GetCurrentItem(int location)
    {
        if (this.listView1.InvokeRequired)
        {
            getCurrentItemCallBack d = new getCurrentItemCallBack(GetCurrentItem);
            return this.Invoke(d, new object[] { location }).ToString();
        }
        else
        {
            return this.listView1.Items[location].Text;
        }
    }

当我打电话时,我得到了同样的错误。

我不明白出了什么问题。

任何帮助表示赞赏。谢谢。

4

1 回答 1

2

尝试使用 ListView.SelectedIndices 属性

http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.selectedindices.aspx

if (this.listView1.SelectedIndices.Count > 0) 
{ 
     string IpAdress = listView1.Items[listView1.SelectedIndices[0]].Text; 
}
于 2013-06-13T07:41:30.770 回答