Пример #1
0
        public void Load(TreeNode treenode)
        {
            if (treenode == null)
            {
                return;
            }
            if (treenode.Tag == null)
            {
                return;
            }
            GC.Collect();
            BeginUpdate();
            CurrentNode = treenode;
            SuspendLayout();
            if (ComboFilebar != null)
            {
                ComboFilebar.Data = (PIDL)treenode.Tag;
            }
            AddImage(Thumbnail.GetIcon(((PIDL)treenode.Tag).Pidl, 16), (PIDL)((PIDL)treenode.Tag).Clone(), treenode);
            treenode.Nodes.Clear();
            TreeNodes = new List <TreeNode>();
            using (PIDL pidl = ((PIDL)treenode.Tag).Clone() as PIDL)
            {
                treenode.Name = pidl.PhysicalPath == "" ? pidl.DisplayName : pidl.PhysicalPath;
                Cursor        = Cursors.WaitCursor;
                using (ShellFolder folder = new ShellFolder(pidl))
                {
                    List <PIDL> children = folder.GetFolders(false);
                    foreach (PIDL child in children)
                    {
                        if (child.IsCompressed)
                        {
                            continue;
                        }
                        string key = child.PhysicalPath;
                        if (key == "")
                        {
                            key = child.DisplayName;
                        }
                        TreeNode node = new TreeNode(child.DisplayName);
                        node      = treenode.Nodes.Add(key, child.DisplayName, node.ImageIndex, node.SelectedImageIndex);
                        node.Name = key;
                        node.Tag  = child;
                        if (child.DisplayName.ToLower() == "network" || child.HasChildren)
                        {
                            node.Nodes.Add("");
                        }

                        AddImage(Thumbnail.GetIcon(((PIDL)node.Tag).Pidl, 16), (PIDL)((PIDL)node.Tag).Clone(), node);
                    }
                }
            }
            if (ComboFilebar != null)
            {
                ComboFilebar.SelectedPIDL = treenode.Tag;
            }
            ResumeLayout();
            EndUpdate();

            Cursor = Cursors.Default;
        }
Пример #2
0
        public void Load(TreeNode parent)
        {
            if (parent == null)
            {
                return;
            }
            if (parent.Tag == null)
            {
                return;
            }
            if (Root != null)
            {
                if (Root.Pidl == ((PIDL)parent.Tag).Pidl)
                {
                    return;
                }
            }
            if (diskReader != null)
            {
                foreach (DiskReader reader in diskReader)
                {
                    reader.Cancel = true;
                }
            }
            diskReader  = new List <DiskReader>();
            this.parent = parent;
            BeginUpdate();
            SuspendLayout();
            Items.Clear();
            largeimagelist.Images.Clear();
            smallimagelist.Images.Clear();
            Root = (PIDL)((PIDL)parent.Tag).Clone();
            {
                ListViewItems = new List <ListViewItem>();
                //if (parent.Parent != null)
                //{
                //    using (PIDL owner = (PIDL)((PIDL)parent.Parent.Tag).Clone())
                //        ListViewItems.Add(new ListViewItem(owner.DisplayName));
                //}
                Cursor = Cursors.WaitCursor;
                using (ShellFolder folder = new ShellFolder(Root))
                {
                    List <PIDL> children = folder.GetFolders(ShowHidden);
                    if (children == null)
                    {
                        ResumeLayout();
                        EndUpdate();
                        Cursor = Cursors.Default;
                        return;
                    }
                    foreach (PIDL child in children)
                    {
                        ListViewItem item = new ListViewItem(child.DisplayName);
                        item.ImageIndex = -1;
                        item.Tag        = child;
                        item.SubItems.Add(child.TypeName);

                        ListViewItems.Add(item);

                        item.Name = child.PhysicalPath + child.DisplayName;
                        if (child.IsFileSystem)
                        {
                            if (child.IsCompressed)
                            {
                                FileInfo fi = new FileInfo(child.PhysicalPath);
                                try
                                {
                                    item.SubItems.Add(StrFormatByteSize(fi.Length));
                                }
                                catch (Exception ex)
                                {
                                    item.SubItems.Add(ex.Message);
                                }
                            }
                            else
                            {
                                diskReader.Add(new DiskReader(child.PhysicalPath, item));
                                diskReader[diskReader.Count - 1].DiskReadComplete += DiskReader_DiskReadComplete;
                                diskReader[diskReader.Count - 1].Progress         += ListViewEx_Progress;
                                item.SubItems.Add("");
                                item.BackColor = Color.Wheat;
                                item.UseItemStyleForSubItems = true;
                                item.SubItems.Add("");
                                item.SubItems.Add("");
                            }
                        }
                        else
                        {
                            item.SubItems.Add("");
                        }
                        item.SubItems.Add("");
                        item.Name = child.PhysicalPath + child.DisplayName;
                    }

                    children = folder.GetFiles(ShowHidden);
                    if (children == null)
                    {
                        return;
                    }
                    foreach (PIDL child in children)
                    {
                        if (!child.IsFolder)
                        {
                            ListViewItem item = new ListViewItem(child.DisplayName);
                            item.ImageIndex = -1;
                            item.Tag        = child;
                            item.SubItems.Add(child.TypeName);

                            ListViewItems.Add(item);
                            if (child.PhysicalPath.Length > 0)
                            {
                                FileInfo fi = new FileInfo(child.PhysicalPath);
                                item.SubItems.Add(StrFormatByteSize(fi.Length));
                            }
                            else
                            {
                                item.SubItems.Add("");
                            }

                            item.SubItems.Add("");
                        }
                    }
                    Items.AddRange(ListViewItems.ToArray());
                    ResumeLayout();
                    EndUpdate();
                    Cursor = Cursors.Default;
                    ThreadPool.QueueUserWorkItem(UpdateIcons);
                }
            }
        }