Каталог привязки к дереву в C # с визуальными студиями - PullRequest
2 голосов
/ 09 июня 2010

Кто-нибудь знает, как связать каталог с древовидным представлением в C #, или знает простой учебник, которому можно следовать? Спасибо

Ответы [ 2 ]

4 голосов
/ 09 июня 2010

Примерно так:

    public void BindDirectoryToTreeView(string directoryPathToBind)
    {
        TreeNode rootNode = new TreeNode();
        treeView1.Nodes.Add(rootNode);
        RecurseFolders(directoryPathToBind, rootNode);
    }

    public void RecurseFolders(string path, TreeNode node)
    {
        var dir = new DirectoryInfo(path);
        node.Text = dir.Name;

        try
        {
            foreach (var subdir in dir.GetDirectories())
            {
                var childnode = new TreeNode();
                node.Nodes.Add(childnode);

                RecurseFolders(subdir.FullName, childnode);
            }
        }
        catch (UnauthorizedAccessException ex)
        {
            // TODO:  write some handler to log and/or deal with 
            // unauthorized exception cases
        }

        foreach (var fi in dir.GetFiles().OrderBy(c=>c.Name))
        {
            var fileNode = new TreeNode(fi.Name);
            node.Nodes.Add(fileNode);
        }
    }

Вы бы вызвали код, например, вызвав BindDirectoryToTreeView("c:\");.Обратите внимание, что у вас должно быть древовидное представление с именем treeView1 в форме, содержащей этот код.

0 голосов
/ 09 июня 2010

Вы можете использовать простую рекурсию. Не уверен, что именно вы хотите отобразить в TreeView, но следующий подход может работать

public static void LoadDir (TreeNode t, DirectoryInfo d) {

TreeNodetn = новый TreeNode (d.name);

t.ChildNodes.Add (tn);

foreach (DirectoryInfo dn в d.GetDirectories ())

LoadDir (т, дп);}

Вы можете вызвать его как

TreeNode tn = новый TreeNode ("Root");

TreeView1.Nodes.Add (tn);

LoadDir (tn, новый DirectoryInfo (@ "C: \ Oracle");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...