Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- protected async override void OnBeforeExpand(TreeViewCancelEventArgs e)
- {
- if (!_expandedCache.Contains(e.Node.FullPath))
- {
- TreeNodeCollection tnc = e.Node.Nodes;
- _expandedCache.Add(e.Node.FullPath);
- await Task.Run(() => {
- Dictionary<ulong, ShellFileGetInfo.FolderIcons> icons = new Dictionary<ulong, ShellFileGetInfo.FolderIcons>();
- ShellFileGetInfo.FolderIcons fi;
- string curPath;
- foreach (TreeNode n in tnc)
- {
- curPath = Path.Combine((string)Tag, n.FullPath.Replace('/', Path.DirectorySeparatorChar));
- if (File.Exists(Path.Combine(curPath, "desktop.ini")) == true)
- {
- if (File.ReadAllText(Path.Combine(curPath, "desktop.ini")).Contains("IconFile"))
- {
- fi = ShellFileGetInfo.GetFolderIcon(curPath, false);
- if (fi.closed != null || fi.open != null)
- {
- icons.Add(((NtfsUsnJournal.UsnEntry)n.Tag).FileReferenceNumber, fi);
- }
- }
- }
- //EndUpdate();
- }
- if (icons.Count > 0)
- {
- Invoke((MethodInvoker)(() =>
- {
- List<Image> images = new List<Image>();
- foreach (var icon in icons)
- {
- images.Add(icon.Value.closed.ToBitmap());
- images.Add(icon.Value.open.ToBitmap());
- }
- BeginUpdate();
- int imageIndexCount = ImageList.Images.Count;
- ImageList.Images.AddRange(images.ToArray());
- foreach (var icon in icons)
- {
- e.Node.Nodes[icon.Key.ToString()].ImageIndex = imageIndexCount;
- imageIndexCount++;
- e.Node.Nodes[icon.Key.ToString()].SelectedImageIndex = imageIndexCount;
- imageIndexCount++;
- }
- EndUpdate();
- }));
- }
- });
- }
- base.OnBeforeExpand(e);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement