private void PopulateTreeView(string directoryValue, TreeNode parentNode) { string[] directoryArray = Directory.GetDirectories(directoryValue); try { if (directoryArray.Length != 0) { foreach (string directory in directoryArray) { substringDirectory = directory.Substring( directory.LastIndexOf('\\') + 1, directory.Length - directory.LastIndexOf('\\') - 1); if (!substringDirectory.Equals(".git", StringComparison.CurrentCultureIgnoreCase) && !substringDirectory.Equals("Logs", StringComparison.CurrentCultureIgnoreCase)) { TreeNode myNode = new TreeNode(substringDirectory); parentNode.Nodes.Add(myNode); PopulateTreeView(directory, myNode); } } } var fileArray = Directory.GetFiles(directoryValue); foreach (var file in fileArray) { TreeNode fileNode = new TreeNode(new FileInfo(file).Name); fileNode.Tag = file.Replace(_repo.Directory.Replace("\\.git", string.Empty) + "\\", string.Empty).Replace("\\", "/"); parentNode.Nodes.Add(fileNode); } parentNode.ClearEmptyChildren(); } catch (UnauthorizedAccessException) { parentNode.Nodes.Add("Access denied"); } // end catch }