TreeView1.Nodes.Clear на слабых машинах - VB

Узнай цену своей работы

Формулировка задачи:

Проблема: довольно заполненый TreeView по команде TreeView1.Nodes.Clear сначала, как я понял, сворачивает все открытые ветки, а потом их удаляет, что довольно долго сопровождается морганием экрана. На стареньких машинах видеть это довольно тяжело. Помогите от этого избавиться. Спасибо.

Решение задачи: «TreeView1.Nodes.Clear на слабых машинах»

textual
Листинг программы
Public Const TV_FIRST  As Long = &H1100
Public Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Public Const TVM_DELETEITEM  As Long = (TV_FIRST + 1)
Public Const TVGN_ROOT As Long = &H0
Public Const WM_SETREDRAW As Long = &HB
'//
 
Public Declare Function SendMessageLong Lib 'user32' Alias 'SendMessageA' (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'//
'// Cверхбыстрая очистка
'//
 
Private Sub ClearTreeView(ByVal tvHwnd As Long)
'//
    Dim lNodeHandle As Long
'//
    SendMessageLong tvHwnd, WM_SETREDRAW, False, 0
 
    Do
        lNodeHandle = SendMessageLong  (tvHwnd, TVM_GETNEXTITEM, TVGN_ROOT, 0)
        If lNodeHandle > 0 Then
            SendMessageLong  tvHwnd, TVM_DELETEITEM, 0, lNodeHandle
        Else
            Exit Do
        End If
    Loop
 
    SendMessageLong tvHwnd, WM_SETREDRAW, True, 0
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы