现在有一个ListView(lv1),有2列。
ListViewItem lvi = new ListViewItem();
lvi.Text = "语文";
lvi.SubItems.Add("99");
lvi.Items.Add(lvi);
lvi = new ListViewItem();
lvi.Text = "数学";
lvi.SubItems.Add("100");
lvi.Items.Add(lvi);
有同学这么查找:ListViewItem[] lvis = lvi.Items.Find("数学", true);
或者这样:ListViewItem[] lvis = lvi.Items["数学"];
这样都得不到结果。因为Find中的第一个参数是Key,就是ListViewItem的Name,因为ListView中的两项都没有设置Name,所以不可能得到想要的结果。 lvi.Items["数学"];也是一样的道理。
如果将代码做如下修改:
lvi = new ListViewItem();
lvi.Text = "数学";
lvi.Name = "数学";
lvi.SubItems.Add("100");
lvi.Items.Add(lvi);
则能得到想要的结果。
如果仅仅想根据文本查找到相关的行的话,建议使用FindItemWithText方法:
ListViewItem lvItem = this.lv1.FindItemWithText("数学", true, 0);