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 がバックグラウンドで取り込まれていないことです。これは、バックグラウンド ワーカーを使用しているため、かなり奇妙です。しかし、主な問題は、ここに一種の画像ビューア(フォームが2つの部分に分割され、左がツリービュー、右が画像プレビューボックス)があり、表示する画像のリストに約1000個の要素が含まれていることです。アイテムを調べて画像を表示しながら、 treeview の「ライブ」更新を表示します。Treeview を削除、移動、または何らかの形で影響を与えることはできません。唯一のアクションは、ツリーをクリックすることです。ありがとう。

4

0 に答える 0