_GUICtrlListView_DeleteAllItems 太慢
本帖最后由 haodd 于 2011-11-20 19:00 编辑有没有更快清空 listview 的所有记录的办法
我的机器 双核的
清空超过 8000+条时就能看到
感觉_GUICtrlListView_DeleteAllItems是一条一条从后面删除的
不是一下子清空的 你清空的时候又多少列表? 我这边挺快的,... 本帖最后由 haodd 于 2011-11-20 19:00 编辑
有8各项左右
item 有 5000+ 到 8000+ 不等
_GUICtrlListView_DeleteAllItems 清空需要2.5秒甚至到3秒才能清空 顶一下 等大神 原来一直在等吗? 打开GUIListView.au3,找到_GUICtrlListView_DeleteAllItems函数,看下内部是怎样工作的吧。 Func _GUICtrlListView_DeleteAllItems($hWnd)
If $Debug_LV Then __UDF_ValidateClassName($hWnd, $__LISTVIEWCONSTANT_ClassName)
If _GUICtrlListView_GetItemCount($hWnd) == 0 Then Return True
If IsHWnd($hWnd) Then
Return _SendMessage($hWnd, $LVM_DELETEALLITEMS) <> 0
Else
Local $ctrlID
For $index = _GUICtrlListView_GetItemCount($hWnd) - 1 To 0 Step -1
$ctrlID = _GUICtrlListView_GetItemParam($hWnd, $index)
If $ctrlID Then GUICtrlDelete($ctrlID)
Next
If _GUICtrlListView_GetItemCount($hWnd) == 0 Then Return True
EndIf
Return False
EndFunc ;==>_GUICtrlListView_DeleteAllItems 回复 5# pusofalse Func _GUICtrlListView_DeleteAllItems($hWnd)
If $Debug_LV Then __UDF_ValidateClassName($hWnd, $__LISTVIEWCONSTANT_ClassName)
If _GUICtrlListView_GetItemCount($hWnd) == 0 Then Return True
If IsHWnd($hWnd) Then
Return _SendMessage($hWnd, $LVM_DELETEALLITEMS) <> 0
Else
Local $ctrlID
For $index = _GUICtrlListView_GetItemCount($hWnd) - 1 To 0 Step -1
$ctrlID = _GUICtrlListView_GetItemParam($hWnd, $index)
If $ctrlID Then GUICtrlDelete($ctrlID)
Next
If _GUICtrlListView_GetItemCount($hWnd) == 0 Then Return True
EndIf
Return False
EndFunc ;==>_GUICtrlListView_DeleteAllItems不是很了解
有时候同样的 条数 清空很快 有时候清空有些慢
诚心求解? 换一种思路呢,将Listview控件del掉,然后再重新画一个控件呢,是不是对于数据很多的,速度会相对来说快一些。 GUICtrlSendMsg($listview1, $LVM_DELETEALLITEMS, 0, 0)
非常快 回复 9# yeqing880
$listview1不是句柄呢
页:
[1]