0

主题说明了一切,这是我现在拥有的代码:

    public void StartCDA()
    {
        backgroundWorker1.RunWorkerAsync();
    }

    public delegate void AddCDAnode(DirectoryInfo dirinfo);

    public void ListDirectory(DirectoryInfo path)
    {
        ImagesTV.Nodes.Add(CreateDirectoryNode(path));
    }

    public void Addnode(DirectoryInfo dirinfo)
    {
        Invoke(new AddCDAnode(ListDirectory), new object[] {dirinfo});
    }

    private TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo)
    {
        var directoryNode = new TreeNode(directoryInfo.Name);
        foreach (var directory in directoryInfo.GetDirectories())
        {
            Statustext = directory.FullName;
            directoryNode.Nodes.Add(CreateDirectoryNode(directory));
        }
        foreach (var file in directoryInfo.GetFiles())
            directoryNode.Nodes.Add(new TreeNode(file.Name));
        return directoryNode;
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        Addnode(CdaDir);
    }

现在的问题是,实际上 Treeview 并没有在后台填充,这很奇怪,因为我正在使用后台工作人员。但主要问题是这里我有一种图像查看器(表单分为两部分,左边是树视图,右边是图片预览框),有时要查看的图像列表包含大约 1000 个元素,这就是为什么我需要能够查看树视图的“实时”更新,同时能够浏览项目并查看图像。将无法删除、移动或以某种方式影响 Treeview ,唯一的操作是单击树。谢谢。

4

0 回答 0