listview选择项目错误

时间:2013-06-13 02:54:03

标签: c# winforms listview thread-safety

我在另一个帖子中有一个listview,我以安全线程安全的方式添加项目,如下所示:

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;
        }
    }

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

我无法理解有什么不对。

任何帮助表示赞赏。 THX。

1 个答案:

答案 0 :(得分: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; 
}