如何获取最后一个ListView列

时间:2013-09-26 15:27:14

标签: c# winforms listview

我有一个包含6列的ListView。如何更改最后一个文本?

以下是完整代码:

string clientdata = Encoding.Default.GetString(data); 
string[] str = clientdata.Split('~'); 
listView1.Items[i].SubItems[2].Text = str[0]; 
listView1.Items[i].SubItems[3].Text = str[1]; 
listView1.Items[i].SubItems[4].Text = str[2]; 
listView1.Items[i].SubItems[5].Text = str[3]; // Error here
break;

但我收到错误:

  

InvalidArgument'5'的值对'index'无效。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

listView1.Items[i].SubItems[listView1.Items[i].SubItems.Count - 1].Text

或使用Linq的Last扩展方法:

listView1.Items[i].SubItems.Cast<ListViewSubItem>().Last().Text

答案 1 :(得分:1)

来自MSDN:

  

ListViewItem.ListViewSubItemCollection中的第一个子项是   总是拥有子项目的项目。执行操作时   在集合中的子项目,一定要参考索引位置1   而不是0来改变第一个子项。

所以第一个子项是subItem[1],所以它应该是:

string clientdata = Encoding.Default.GetString(data); 
string[] str = clientdata.Split('~'); 
listView1.Items[i].SubItems[1].Text = str[0]; 
listView1.Items[i].SubItems[2].Text = str[1]; 
listView1.Items[i].SubItems[3].Text = str[2]; 
listView1.Items[i].SubItems[4].Text = str[3]; 
break;

假设您有x列:
ListviewItem.SubItems[0]代表第一列 ListviewItem.SubItems[1]代表第二列 ListviewItem.SubItems[x-1]代表最后一列