小弟有个项目,需要在一个控件上显示数据,并且根据数据更新某部分数据。我现在选择ListView,因为据说这个控件比较有效率。
我的数据格式如下:.....
01班 a b c
01班 b c d
02班 h n j
01班 n n n
.....一共大概200多条,每条数据整体是唯一的,但是需要较快频率的更新。
问题:
1、比如我现在要更新数据(01班 n n n),我怎么样才能搜索到这个数据的索引号index进行修改?
我查了FindItemWithText(“01班”)方法只能找到第一项,而listview1.Items.Find()虽然可以找到多个返回数组 listview[],但是Find后面的参数和FindItemWithText不一样。请问还有什么办法实现吗?
2、请问实现类似的功能,除了选listview 有更好的选择吗?系统运行的时候每秒都要读取大量的数据,高频率刷新,如果每次都全部重写会闪烁不停谢谢!!!!!!

解决方案 »

  1.   

    你用个winform还是wpf啊,如果wpf的直接去改绑定的类就行了。
    winform的话,实在不行遍历一遍,查出所有,虽然有些慢。不过也可以自己写一个类对控件进行绑定,只修改绑定类的数据也行,要花点时间写。
    以前自己用过一个继承dataview的控件,数据就是写了一个类进行绑定,只要改类里的数据就好了
      

  2.   


    我没接触过wpf,都是用winform
    谢谢
      

  3.   

    类似这样的查找
     ListViewItem li = listView1.Items.Cast<ListViewItem>().First(x => x.Text == "01班" && x.SubItems[1].Text == "n" && x.SubItems[2].Text == "n");
    if(li!=null)
      //找到了
    else
      //没找到红色部分是你的查询条件
      

  4.   


    谢谢!!
    我用类似的方法解决了,不过我那个没你这个好看。我对linq不熟悉。
    我的是
    ListViewItem[] t = Lview.Items.Find(lv.Name, true);
    IEnumerable<ListViewItem> ie = t.Where(lvi => lvi.Text == lv.Text && lvi.SubItems[1].Text == p);
    ListViewItem thisl = ie.ElementAt(0);