我有一个包含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'无效。
答案 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]
代表最后一列