各位大伯大伯们~~~!!!!~~~给点建议吧~~~!!~~请教了~~~!只有35分了,全送上~!~

解决方案 »

  1.   

    如果实在没有办法的话,那可以不用ListView,用什么网格控件比较好??关键是闪烁问题~~!!!~~~~谢谢~~
      

  2.   

    若存在批量刷新,可用LockWindowUpdate ListView.hwnd
    ....更新项目
    LockWindowUpdate 0但250ms的间隔,闪烁是不可避免的,只能用此法减轻闪烁
      

  3.   

    可用一个计数器,每刷新n项才重画一次ListView控件。
    闪烁感就n确定。Private Type RECT
       Left As Long
       Top As Long
       Right As Long
       Bottom As Long
    End TypePrivate Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) As Long
    Private Declare Function ValidateRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
      

  4.   

    呵呵,我没用过 LockWindowUpdate 函数,但似乎更简洁。
      

  5.   

    蓝水晶,你的方法好象很麻烦,我还要算有效和无效区域晕~~~LockWindowUpdate我先试试吧
      

  6.   

    不用你算啊,不是有个GetClientRect吗?很少代码的,如下:
    Private mrcClient As RECT...
    Call GetClientRect(ListView1.hwnd, mrcClient)
    ...   For ii = 1 To 项数
          If ii> 100 
             Call ValidateRect(ListView1.hwnd, mrcClient)//加入100条后停止重画
          End if
       Next ii
          
       Call InvalidateRect(ListView1.hwnd, mrcClient, True)//控件有事件到可重画
      

  7.   

    更正:
    Private mrcClient As RECT...
    Call GetClientRect(ListView1.hwnd, mrcClient)
    ...   For ii = 1 To 项数      ......//这里向ListView1添加数据      If ii> 100 
             Call ValidateRect(ListView1.hwnd, mrcClient)//加入100条后停止重画
          End if
       Next ii
          
       Call InvalidateRect(ListView1.hwnd, mrcClient, True)//控件有事件到可重画