1

我有一个 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”的值对“索引”无效。

4

2 回答 2

2

你可以这样做:

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

或者使用Linq的Last扩展方法:

listView1.Items[i].SubItems.Cast<ListViewSubItem>().Last().Text
于 2013-09-26T15:29:07.523 回答
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]代表最后一列

于 2013-09-26T16:21:23.350 回答