protected override void OnBeforeExpand(TreeViewCancelEventArgs e) { // Remove the placeholder node. e.Node.Nodes.Clear(); // We stored the ShellItem object in the node's Tag property - hah! ShellItem shNode = (ShellItem)e.Node.Tag; ArrayList arrSub = shNode.GetSubFolders(); foreach (ShellItem shChild in arrSub) { TreeNode tvwChild = new TreeNode(); tvwChild.Text = shChild.DisplayName; tvwChild.ImageIndex = shChild.IconIndex; tvwChild.SelectedImageIndex = shChild.IconIndex; tvwChild.Tag = shChild; // If this is a folder item and has children then add a place holder node. if (shChild.IsFolder && shChild.HasSubFolder) { tvwChild.Nodes.Add("PH"); } e.Node.Nodes.Add(tvwChild); } base.OnBeforeExpand(e); }
/// <summary> /// Loads the root TreeView nodes. /// </summary> private void LoadRootNodes() { // Create the root shell item. ShellItem m_shDesktop = new ShellItem(); // Create the root node. TreeNode tvwRoot = new TreeNode(); tvwRoot.Text = m_shDesktop.DisplayName; tvwRoot.ImageIndex = m_shDesktop.IconIndex; tvwRoot.SelectedImageIndex = m_shDesktop.IconIndex; tvwRoot.Tag = m_shDesktop; // Now we need to add any children to the root node. ArrayList arrChildren = m_shDesktop.GetSubFolders(); foreach (ShellItem shChild in arrChildren) { TreeNode tvwChild = new TreeNode(); tvwChild.Text = shChild.DisplayName; tvwChild.ImageIndex = shChild.IconIndex; tvwChild.SelectedImageIndex = shChild.IconIndex; tvwChild.Tag = shChild; // If this is a folder item and has children then add a place holder node. if (shChild.IsFolder && shChild.HasSubFolder) tvwChild.Nodes.Add("PH"); tvwRoot.Nodes.Add(tvwChild); } // Add the root node to the tree. treeWnd.Nodes.Clear(); treeWnd.Nodes.Add(tvwRoot); tvwRoot.Expand(); }
/// <summary> /// Loads the root TreeView nodes. /// </summary> private void LoadRootNodes() { // Create the root shell item. m_shDesktop = new ShellItem(); // Create the root node. TreeNode tvwRoot = new TreeNode(); tvwRoot.Text = m_shDesktop.DisplayName; tvwRoot.ImageIndex = m_shDesktop.IconIndex; tvwRoot.SelectedImageIndex = m_shDesktop.IconIndex; tvwRoot.Tag = m_shDesktop; // Now we need to add any children to the root node. ArrayList arrChildren = m_shDesktop.GetSubFolders(); foreach (ShellItem shChild in arrChildren) { TreeNode tvwChild = new TreeNode(); tvwChild.Text = shChild.DisplayName; tvwChild.ImageIndex = shChild.IconIndex; tvwChild.SelectedImageIndex = shChild.IconIndex; tvwChild.Tag = shChild; // If this is a folder item and has children then add a place holder node. if (shChild.IsFolder && shChild.HasSubFolder) { tvwChild.Nodes.Add("PH"); } tvwRoot.Nodes.Add(tvwChild); } // Add the root node to the tree. treeWnd.Nodes.Clear(); treeWnd.Nodes.Add(tvwRoot); tvwRoot.Expand(); }