我的方案是采用timer控件每隔3秒钟对listview进行刷新,也就是消除现有数据,重新遍历数据库,显示到listview上,这些都没有问题了,只是每次刷新后listview老是蹦到最上方,这样如果刷新快的话根本无法看下方的数据了(listview显示类型为detail),希望大侠们能给个解决方案!

解决方案 »

  1.   

    listView1.Items[listView1.Items.Count - 1].EnsureVisible();//这句保证滚动条始终在最下方
      

  2.   

    listView1.Items[listView1.Items.Count - 1].EnsureVisible();可以EnsureVisible确保指定项在控件中是可见的,必要时滚动控件的内容。
      

  3.   

    额,我通过下面这种方式实现了:在刷新之前,我先定义了一个string变量key,然后判断listView1.FocusedItem是否为null,否的话将listView1.FocusedItem.Text赋给它,然后刷新之后,遍历一遍listview,找到与之前key相同的行,继而listView1.Items[i].Selected = true;
                                          listView1.Items[i].Focused = true;
                                          listView1.EnsureVisible(i); // 使该项可见
                                                  listView1.Focus();
    这个思路来自另外一篇csdn帖子zswang大侠的回复,如果有哪位同学还有别的思路 ,请赐教!
      

  4.   

    好像设置一下selecteditem 就可以, 它会默认显示选中当前项并确认显示
      

  5.   


            int _index = 0;
            private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
            {
                if (e.IsSelected)
                {
                    ListViewItem lva = e.Item;
                    _index = lva.Index;
                }
            }       
            private void addlist()
            {
                listView1.Items.Clear();
                for (int i = 0; i < 20; i++)
                {
                    string[] s = new string[2];
                    s[0] = i.ToString();
                    s[1] = (i + 1).ToString();
                    ListViewItem lvt = new ListViewItem(s);
                    listView1.Items.Add(lvt);
                }            
                listView1.Items[_index].EnsureVisible();//这句保证滚动条始终在最下
           }
      

  6.   

    我在.net里面是设置<%@ Page Language="C#" MasterPageFile="~/at1.master" MaintainScrollPositionOnPostback="true"