如何获取最后一个列表视图列

本文关键字:最后一个 列表 视图 获取 何获取 | 更新日期: 2023-09-27 18:33:05

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

以下是完整的代码:

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"对"索引"无效。

如何获取最后一个列表视图列

你可以这样做:

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

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

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

来自 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]表示最后一列