主题说明了一切,这是我现在的代码:
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,唯一的操作是单击树。 感谢。