//1.用key给ListViewItem 的 SubItems赋值 ListViewItem listViewItem= listView1.Items.Add("第一列文字"); listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem() { Name = "这里就是key", Text = "这里是显示的文字" }); //2.用key取ListViewItem 的 SubItems string text= listView1.SelectedItems[0].SubItems["这里就是key"].Text //3.给ListView添加数据并且设置选中项后,this.listView1.SelectedItems.Count一直为0;在网上找了半天,半猜出来了 //首先,给ListView添加数据写在了ListView的构造函数里面 public listviewtest(List<List> exerciseTable, int selectIndex) { InitializeComponent(); for (int i = 0; i < exerciseTable.Count; i++) { List exerciseRow = exerciseTable[i]; listView1.Items.Add(exerciseRow[0]); listView1.Items[i].SubItems.Add(exerciseRow[1]); listView1.Items[i].SubItems.Add(exerciseRow[2]); listView1.Items[i].SubItems.Add(exerciseRow[3]); listView1.Items[i].SubItems.Add(exerciseRow[4]); } } //这个时候紧跟着在后面设置选中项并测试是否有选中项 if (listView1.Items.Count > 0) { //listView1.Focus(); listView1.HideSelection = false; listView1.Items[0].Selected = true; //listView1.Select(); } int count = this.listView1.SelectedItems.Count; /*这个时候this.listView1.SelectedItems.Count一直为零???一直搞不懂为啥 在网上找了相关资料:构造函数是用来创建和实例化对象的,窗体加载事件是在构造函数执行完之后执行的 个人猜测是因为构造函数设置ListView的选中项的时候,ListView还没有完全被勾画出来, 也就是说还在内存中(或者其他地方,这一块一直不懂),然后this.listView1.SelectedItems.Count就一直为零了 把获取选中项信息的代码放到Load事件中,经测试结果正确*/ private void listviewtest_Load(object sender, EventArgs e) { int count = this.listView1.SelectedItems.Count;//count = 1 }