listview1.visible = false或
 LockWindowUpdate (API)
前者更简单好用。

解决方案 »

  1.   

    先隐藏listview,等全部加上后,一起在显示listview
      

  2.   


    listview1.visible = false或
     LockWindowUpdate (API)
    前者更简单好用。
      

  3.   

    listview1.visible = false???
    什么意思?
    看不见。也太
      

  4.   

    加了显示就更慢了~~~~~~~~~~~~~~~~~~~~~~~~ 我一般就是分页的,  每次最多显示500条的,  如果还要显示就弹个MSGBOX出来
      

  5.   

    加了显示就更慢了~~~~~~~~~~~~~~~~~~~~~~~~ 我一般就是分页的,  每次最多显示500条的,  如果还要显示就弹个MSGBOX出来
      

  6.   

    先隐藏不行阿
    listview是主窗口阿,隐藏了就什么都没了,别人不会满意的
      

  7.   

    看不见不行阿,主窗口是listview,看不见别人不会满意的
      

  8.   

    listview1.enabled=false
    for ...
    ...
    next
    listview1.enabled=truepls try it!
      

  9.   

    我不能分页,也不能不可见
     LockWindowUpdate (API)?
    Chice_wxg说的清楚点好么?
      

  10.   

    dwei得建议不行阿,还是抖得厉害,而且enable=false了以后,我在搜索的同时所能做的工作就不能进行了
      

  11.   

    在WIN2000下,加上与不加上
    listview1.visible = false
    的区别不大。
    在我的机器上测试结果是:
    For i = 1 To 10000
        s = "1234567890987654321" & i
        Set itm = ListView1.ListItems.Add(, , s)
    Next
    总共添加1万条记录,
    加上listview1.visible = false需要时间448毫秒,
    不使用listview1.visible = false需要时间420毫秒,
    如果只有1000条记录,大约需要38毫秒
    -----------------------
    由此看来,你的上千条记录添加到ListView1中,只需要一眨眼的功夫
      

  12.   

    刚才试了一下,确实不行,LISTVIEW控件似乎没有提供什么属性和方法解决这个问题,要实现贴主的目的,光靠控件本身可能没法实现。不知道用API有没有办法,找找看。其他控件,比如网格估计也没有象WINDOWS搜索的表现,或许是我孤陋寡闻了,关注!
      

  13.   

    可是我的数据是从数据库中读出
    每rst.movenext在listview中加一行
    而且,数据库是在光盘上的....就更慢了
    如果没有doevents,我试过了,起码20s以后才能全部显示出来
      

  14.   

    Private Declare Function LockWindowUpdate Lib "user32" Alias "LockWindowUpdate" (ByVal hwndLock As Long) As Long【说明】
      锁定指定窗口,禁止它更新。同时只能有一个窗口处于锁定状态 【返回值】
      Long,非零表示成功,零表示失败(比如另外已有一个窗口锁定) 【备注】
      windows会跟踪锁定窗口的区域,并会在窗口解锁后重画它们。可用GetDCEx获得一个特殊的设备场景,令其与锁定窗口协同工作,从而描绘一个加锁的窗口。这种技术的一个应用场合是创建跟踪矩形(比如用于改变窗口大小的矩形)【参数表】
      hwndLock -------  Long,欲锁定窗口的句柄。如设为零,则对窗口解锁
    我用的就是这个,但这提速提不了多少,只是防止闪烁而已
      

  15.   

    LockWindowUpdate (API)
    这个东西有没有用啊,前面有人提到过的,谁用过?
      

  16.   

    Public Type RECT
           Left                As Long        '
           Top                 As Long        '
           Right               As Long        '
           Bottom              As Long        '
    End Type
    Public Declare Function GetClientRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT)
    Public Declare Function InvalidateRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long)
    Public Declare Function ValidateRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT)dim rc as rect
    getclientrect(listview1.hwnd,rc)for i=1 to rst.RecordCount
        Set itm = ListView1.ListItems.Add(, , rst("DocName"), , FileStyle)
        .
        .
        .
        Do Events
    vallideaterect(listview1.hwnd,rc)
    nextinvalidaterect(listview1.hwnd,rc,true)
      

  17.   

    上千条记录肯定不会很慢,应该是你的代码有问题,最好等到listview显示完了以后再处理其他事情
      

  18.   

    这段代码可以试一下,注意调整ii的值,以达到理想的效果
    Public Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As LongPrivate Sub Command1_Click()
      dim ii as integer  ii=100
      Text1.Text = Time
      ListView1.View = lvwReport
      ListView1.ColumnHeaders.Add , "haa", "test"
      For i = 1 To 100000
          If i Mod ii = 0 Then
            Call LockWindowUpdate(0)
          Else
            Call LockWindowUpdate(ListView1.hwnd)
          End If
          ListView1.ListItems.Add , "c" & i, i
          DoEvents
      Next
      Text2.Text = Time
    End Sub