小弟今天工作时遇到个问题:
我设定每间隔1秒钟向Listview控件追加一条记录,发现每追加一条记录,Listivew就闪烁一次。请教各位高手前辈:
怎么能避免lisview在更新时闪烁的毛病?我发新瑞星防火墙主界面的Listview就没有这样的毛病。
请哥哥姐姐们赐教了!

解决方案 »

  1.   

    添加记录前把他隐藏了,添加后再显示出来。
    lstview1.visible=false
    .....
    lstview1.visible=true
      

  2.   

    '稍微好一些,记录多了,还是会闪烁,最好的办法是实现Virtual ListView
    Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As LongPrivate Sub Form_Load()
        Timer1.Interval = 1000    Dim itemx As ListItem
        With ListView1
            .ColumnHeaders.Add , , "序号"
            .ColumnHeaders.Add , , "文件路径及名称"
            .FullRowSelect = True
            .GridLines = True
            Set itemx = .ListItems.Add(, , "1")
            itemx.SubItems(1) = "c:\db.txt"
            .View = lvwReport
        End With
    End SubPrivate Sub Timer1_Timer()
        LockWindowUpdate ListView1.hWnd
        Dim itemx As ListItem
        Set itemx = ListView1.ListItems.Add(, , "2")
        itemx.SubItems(1) = "c:\1.bmp"
        LockWindowUpdate 0
    End Sub
      

  3.   

    实现Virtual ListView
    http://www.mvps.org/vbvision/Sample_Projects.htm#Virtual_ListView_Demo
      

  4.   

    谢谢各位高手前辈了,尤其是lxcc(虫子|专注于抢分),你真是个vb&api专家。
    也谢谢qiqi5521(琪琪),谢谢!谢谢!!!谢谢谢谢谢谢!!!!
      

  5.   

    又发现问题了:怎么自动定位到Listview最后一条记录。
    现在我用的是
    ListView1.ListItems(ListView1.ListItems.Count).Selected = True
    只是自动将焦点移到了最后一条增加的记录,可是当记录填满,出现滚动条后,滚动条就不能自动滚动并定位到最后一条记录了。麻烦各位高手指点江山啊!
      

  6.   

    Private Sub Command1_Click()
        ListView1.SetFocus
        ListView1.ListItems(99).EnsureVisible
        ListView1.ListItems(99).Selected = True
        
    End Sub