выберите узел в treeview программно в приложении Windows

#c# #.net #windows #winforms #treeview

#c# #.net #Windows #winforms #просмотр дерева

Вопрос:

я загрузил древовидное представление. я хочу обойти узел treeview и развернуть и выбрать узел. Расширение работает нормально. но выбрать узел не работает.

 private void Traverse(TreeNodeCollection nodes, string findtext) 
        {
          foreach (TreeNode node in nodes) 
            {
                if (node.Text.ToString().Trim() == findtext)
                {
                    node.Expand();
                    node.TreeView.SelectedNode = node.NextNode;                    

                    //tvwStructureTree.SelectedNode = this.tvwStructureTree.Nodes[node.Index];
//Select a node in Treeview tvwStructureTree But not working
                    tvwStructureTree.SelectedNode = node; 
                    node.TreeView.Focus(); 
                }
                Traverse(node.Nodes, findtext); 
            } 

        }
  

Это в приложении Windows.

Комментарии:

1. Какой узел вы хотите выбрать? Я полагаю, что это не node.nextNode. Что такое tvwStructureTree? Попробуйте node. Просмотр дерева. Выбранный узел = узел. Узлы [0];

Ответ №1:

Не совсем уверен, в чем ваша проблема. Просмотр дерева.Свойство SelectedNode является правильным свойством.

Когда вы устанавливаете это свойство, указанный узел прокручивается в поле зрения, а все родительские узлы разворачиваются так, чтобы указанный узел был виден.

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

Убедитесь, что node.TreeView это правильный экземпляр TreeView.

 node.TreeView.SelectedNode = node.NextNode;  
  

Просмотр дерева.Свойство HideSelection — это еще одно свойство, которое может вам пригодиться.

Если для этого свойства установлено значение false, выбранные узлы в элементе управления TreeView остаются выделенными цветом, отличным от текущего цвета выделения, когда элемент управления TreeView теряет фокус. Вы можете использовать это свойство, чтобы элементы, выбранные пользователем, были видны, когда пользователь нажимает на другой элемент управления в форме или переходит в другое окно.

Ответ №2:

У меня была аналогичная проблема. ctor моей формы получает тест узла для выбора.Поиск правильного узла не был проблемой, но дерево не отображало узел как выбранный, поскольку элемент управления деревом не имел фокуса. просто нужно было использовать Form.ActiveControl = myTreecontrol; перед установкой myTreecontrol.SelectedNode

Ответ №3:

Я протестировал именно ваш собственный код и работал нормально, как найти, так и выбрать узел! без какой-либо конкретной настройки свойств для моего treeview! кстати, я использую .Net 3.5 и VS 2008