Inheritance: ExplorerNode
        private void treFileBrowser_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            ExplorerNode node = (ExplorerNode)e.Node;
            node.Children.Clear();
            node.Nodes.Clear();

            DirectoryInfo directoryInfo = new DirectoryInfo(node.AbsolutePath);

            foreach (DirectoryInfo directory in directoryInfo.GetDirectories())
            {
                FolderNode directoryNode = new FolderNode(node, directory.Name);
                directoryNode.SelectedImageIndex = directoryNode.ImageIndex;

                if (directory.GetFiles().Length != 0 | directory.GetDirectories().Length != 0)
                {
                    directoryNode.Nodes.Add("*DUMMY*");
                }

                node.Nodes.Add(directoryNode);
                node.Children.Add(directoryNode);
            }

            foreach(FileInfo file in directoryInfo.GetFiles())
            {
                if(file.Extension == ".prg")
                {
                    FileNode fileNode = new FileNode(node, file.Name);

                    node.Nodes.Add(fileNode);
                    node.Children.Add(fileNode);
                }
            }
        }
        private void newFolderToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ExplorerNode explorerNode = (ExplorerNode)treFileBrowser.SelectedNode;

            int folderNumber = 1;
            bool folderCreated = false;
            string folderPath = explorerNode.AbsolutePath;

            while (!folderCreated)
            {
                if (Directory.Exists(folderPath + @"\NewFolder" + folderNumber))
                {
                    folderNumber++;
                }
                else
                {
                    try
                    {
                        Directory.CreateDirectory(folderPath + @"\NewFolder" + folderNumber);

                        FolderNode folderNode = new FolderNode(explorerNode, "NewFolder" + folderNumber);

                        explorerNode.Nodes.Add(folderNode);
                        explorerNode.Children.Add(folderNode);
                        treFileBrowser.SelectedNode = folderNode;
                        treFileBrowser.LabelEdit = true;
                        folderNode.BeginEdit();
                        folderCreated = true;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, Application.ExecutablePath, MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
                    }
                }
            }
        }