vb6 Обновление древовидной структуры (показать обновленный файл) в дочерних элементах - PullRequest
0 голосов
/ 31 октября 2019

Я загружаю treeview1 и treeview2 с одинаковыми именами zip, но дочерние элементы могут отличаться друг от друга.
Теперь для теста я загрузил treeview2 с несколькими именами zip и в нем есть дочерние элементы вместо перезагрузкиэлементы, которые я использовал

treeview2.refresh

, теперь оставляя загруженные элементы treeview2, я открываю 1 из zip-архивов и добавляю в него любой 1-й файл, а затем возвращаюсь к treeview2, нажмите «Обновить», обновление не отображается. если я не перезагружаю элементы снова.

TreeView2.Nodes.Clear
ListFiles app.path & "\folder\", "zip"

игнорирую приведенный выше код, я загружаю свои элементы следующим образом, как я обновляю элементы и показываю обновленные элементы без перезагрузки.

1 Ответ

2 голосов
/ 31 октября 2019

Если вы не добавляете файлы в Zip-файлы через свое приложение, вам придется самостоятельно следить за содержимым или DateLastModified Zip-файлов. Вы можете создать подпрограмму для перебора имен файлов Zip, проверить их содержимое / DateLastModifed и настроить узлы в TreeView. Вы можете вызвать эту подпрограмму на таймере, если содержимое ваших Zip-файлов часто меняется.

Вот пример подхода, в котором используется словарь для отслеживания LastModifiedDate каждого файла:

Dim m_objFileModifiedDates As New Dictionary
Dim m_objFSO As New FileSystemObject

Private Sub Command1_Click()
    Dim objFolder As Folder
    Dim objFile As File
    Dim sModifiedFiles As String

    Set objFolder = m_objFSO.GetFolder("C:\temp\")

    For Each objFile In objFolder.Files

        ' Check if it exists in Dictionary
        If Not m_objFileModifiedDates.Exists(objFile.Name) Then
            ' Add File
            m_objFileModifiedDates.Add objFile.Name, objFile.DateLastModified
        Else
            ' Check Last Modified Date
            If m_objFileModifiedDates.Item(objFile.Name) <> objFile.DateLastModified Then
                ' Update Dictionary
                m_objFileModifiedDates.Item(objFile.Name) = objFile.DateLastModified
                sModifiedFiles = sModifiedFiles & objFile.Name & vbCrLf
            End If
        End If

    Next

    If sModifiedFiles <> "" Then
        ' Update TreeView with modifed files
        MsgBox "Files modified: " & vbCrLf & sModifiedFiles
    End If

End Sub

Когдаэто обнаруживает, что файл был изменен, вы можете обновить TreeView, прочитав содержимое измененного файла снова и обновить этот узел TreeView, или просто обновить все дерево.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...