Как определить имя выбранного TreeNode, будь то пространство имен или класс? - PullRequest
2 голосов
/ 10 февраля 2011

Я делаю приложение для Windows.Я использую TreeView для отображения пространств имен.

        var namespaces = assembly.GetTypes()
            .ToLookup(ns => ns.Namespace);


        foreach (var subNamespace in namespaces)
        {
            TreeNode assemblyNode = multiSelectMethodTree.Nodes
                                             .Add(subNamespace.Key);                
        }

Поскольку в проекте огромное количество методов и классов, я думал о том, чтобы отображать классы только тогда, когда пользователь нажимает, чтобы развернуть ('+') пространство имен, и отображать методы, когда классрасширен.

    private void MultiSelectMethodTree_AfterExpand(object sender, TreeViewEventArgs e)
    {
        TreeNode expandedNode = e.Node;
    }

В событии AfterExpand я не могу определить, является ли это пространством имен или классом.

1 Ответ

2 голосов
/ 10 февраля 2011

Вы можете наследовать от TreeNode класса для создания определенных типов для каждого из них для пространства имен, класса, перечисления и т. Д.

Пример:

public class NamespaceTreeNode : TreeNode { /* May add suited properties. */ }

И вместо создания TreeNode объектасоздать объект этих типов.

Чтобы определить, какой узел выбран, вы можете сделать следующее:

private void MultiSelectMethodTree_AfterExpand(object sender, TreeViewEventArgs e)
{
    TreeNode expandedNode = e.Node;

    if(expandedNode is NamespaceTreeNode) { /* TODO */ }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...