void LoadFiles()
        {
            try
            {
                DirectoryInfo di    = new DirectoryInfo(FolderRoot);
                var           files = DataProvider.GetSupportedFiles(di, false);
                if (files.Any())
                {
                    List <TreeNodeAdv> nodes = new List <TreeNodeAdv>();
                    foreach (FileInfo fi in files)
                    {
                        TreeNodeAdvSubItem subitem1 = new TreeNodeAdvSubItem();
                        TreeNodeAdvSubItem subitem2 = new TreeNodeAdvSubItem();
                        subitem1.Text     = fi.FullName;
                        subitem1.HelpText = subitem1.Text;

                        subitem2.Text     = fi.LastWriteTime.ToString();
                        subitem2.HelpText = subitem2.Text;

                        TreeNodeAdv node = new TreeNodeAdv(fi.Name);
                        node.SubItems.AddRange(new[] { subitem1, subitem2 });
                        nodes.Add(node);
                    }

                    multiColumnTreeView1.Nodes.Clear();
                    multiColumnTreeView1.Nodes.AddRange(nodes);
                    multiColumnTreeView1.Nodes[0].Expanded = true;
                    multiColumnTreeView1.SelectedNode      = multiColumnTreeView1.Nodes[0];
                    multiColumnTreeView1.Focus();
                }
            }
            catch { }
        }
        void multiColumnTreeView1_BeforeExpand(object sender, TreeViewAdvCancelableNodeEventArgs e)
        {
            try
            {
                //Checking whether the Node has been  expanded atleast once
                if (e.Node.ExpandedOnce)
                {
                    return;
                }

                DirectoryInfo   dir;
                DirectoryInfo[] subDir;
                if (multiColumnTreeView1.Nodes[0].Nodes.Count == 0) //Root directory
                {
                    dir    = new DirectoryInfo(FolderRoot);
                    subDir = dir.GetDirectories();
                }

                else
                {
                    //Get the Path of the node and AddSeparatorAtEnd Property set to true
                    string path = e.Node[1].Text;

                    dir    = new DirectoryInfo(path);
                    subDir = dir.GetDirectories();
                }

                foreach (DirectoryInfo dirinfo in subDir)
                {
                    TreeNodeAdvSubItem subitem1 = new TreeNodeAdvSubItem();
                    TreeNodeAdvSubItem subitem2 = new TreeNodeAdvSubItem();
                    subitem1.Text     = dirinfo.FullName;
                    subitem1.HelpText = subitem1.Text;

                    subitem2.Text     = dirinfo.LastWriteTime.ToString();
                    subitem2.HelpText = subitem2.Text;

                    TreeNodeAdv node = new TreeNodeAdv(dirinfo.Name);
                    node.SubItems.AddRange(new[] { subitem1, subitem2 });
                    e.Node.Nodes.Add(node);
                }
            }
            catch { }
        }
        public void SetPath(string folderPath, IAnalogyOfflineDataProvider dataProvider)
        {
            FolderRoot   = folderPath;
            DataProvider = dataProvider;

            var dir = new DirectoryInfo(folderPath);
            TreeNodeAdvSubItem subitem1 = new TreeNodeAdvSubItem();
            TreeNodeAdvSubItem subitem2 = new TreeNodeAdvSubItem();

            subitem1.Text     = dir.FullName;
            subitem1.HelpText = subitem1.Text;
            subitem2.Text     = dir.LastWriteTime.ToString();
            subitem2.HelpText = subitem2.Text;
            TreeNodeAdv node = new TreeNodeAdv(dir.Name);

            node.SubItems.AddRange(new[] { subitem1, subitem2 });
            multiColumnTreeView1.Nodes.Clear();
            multiColumnTreeView1.Nodes.Add(node);
            multiColumnTreeView1.Nodes[0].Expanded = true;
            multiColumnTreeView1.SelectedNode      = multiColumnTreeView1.Nodes[0];
            multiColumnTreeView1.Focus();
        }