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

Есть ли более простой метод, чем приведенный ниже код, для получения корневых узлов или узлов первого уровня в древовидном представлении?

TreeNode node = treeView.SelectedNode;

while(node != null)
{
       node = node.Parent;
}    

person LEMUEL ADANE    schedule 23.12.2010    source источник
comment
В своих программах я делаю так, как вы описали (или, по крайней мере, похоже; ваш код всегда приводит к ссылке null в переменной node). Испытываете ли вы проблемы с производительностью при этом?   -  person Uwe Keim    schedule 23.12.2010
comment
@Vlad Lazarenko Это будет работать, только если у вас есть только один корневой узел.   -  person Uwe Keim    schedule 23.12.2010


Ответы (4)


На самом деле правильный код:

TreeNode node = treeView.SelectedNode;
while (node.Parent != null)
{
    node = node.Parent;
} 

иначе вы всегда будете получать node = null в конце цикла.

Кстати, если вы уверены, что у вас есть один и только один корень в вашем TreeView, вы можете рассмотреть возможность использования напрямую treeView.Nodes[0], потому что в этом случае он даст корень.

person digEmAll    schedule 23.12.2010

Попробуй это. Это сработало для меня ...!

treeView1.TopNode.Expand();
person Chathura Liyanage    schedule 19.01.2017
comment
Вы читали вопрос? См. ответ с пониженным голосом в отношении проблемы TopNode. - person LarsTech; 19.01.2017
comment
Эта команда изменяет отображение дерева. Показ расширения узла. Вопрос (ИМХО) заключался в том, как получить корневой узел выбранного узла как объект в коде. - person TinyRacoon; 15.07.2019

TreeNode rootNode = treeView1.TopNode;

это должно быть все, что вам нужно. SelectedNode не обязательно должен быть всегда != null

person Jebu    schedule 21.03.2013
comment
Это ужасно неправильно. Это получает первый полностью видимый узел дерева в элементе управления представлением дерева. Обратите внимание, что изначально TopNode возвращает первый корневой узел дерева, который расположен в верхней части TreeView. Однако, если пользователь прокрутил содержимое, вверху может оказаться другой узел дерева. - person woddle; 18.11.2013

person    schedule
comment
Не совсем понятно, как это отвечает на вопрос, и код в комментарии не помогает. Вам нужно отредактировать свой вопрос. - person Karl Richter; 10.02.2018