在Windows应用程序中以编程方式选择treeview中的节点

时间:2011-10-12 07:08:47

标签: c# .net windows winforms treeview

我已加载树状视图。我想Traverse 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应用程序中。

3 个答案:

答案 0 :(得分:5)

不太确定你的问题是什么。 TreeView.SelectedNode Property是正确的属性。

  

设置此属性时,指定的节点将滚动到视图中   并扩展任何父节点,以便指定的节点   可见。

     

当父节点或所选节点的任何祖先节点是   以编程方式或通过用户操作折叠   折叠节点成为选定节点。

确保node.TreeView是正确的TreeView实例。

node.TreeView.SelectedNode = node.NextNode;  

TreeView.HideSelection Property是另一个可能对您有用的属性。

  

当此属性设置为false时,TreeView中的所选节点   控件保持以与当前颜色不同的颜色突出显示   TreeView控件失去焦点时的选择颜色。您可以使用   此属性用于保存用户选择的项目时可见   用户单击表单上的不同控件或移动到   不同的窗口。

答案 1 :(得分:1)

我有一个类似的问题。我的表单的ctor被测试了要选择的节点。找到正确的节点不是问题,但是由于树控件没有焦点,因此树未显示选中的节点。只需在设置host = '192.168.1.90' port = 50001 s = socket.socket() s.connect((host, port)) Filename = 'prova3.txt' s.send(Filename.encode('utf-8')) s.shutdown(socket.SHUT_WR) data = s.recv(1024).decode('utf-8') print(data) s.close() host = '192.168.1.90' port = 50001 s = socket.socket() s.connect((host, port)) Filename = 'prova3.txt' s.send('prova3.txt') s.shutdown(socket.SHUT_WR) data = s.recv(1024).decode('utf-8') print(data) s.close()

前使用Form.ActiveControl = myTreecontrol;

答案 2 :(得分:0)

我测试了你自己的代码并且工作正常,都找到并选择了节点! 没有为我的treeview任何特定的属性设置! 顺便说一句,我正在使用.Net 3.5和VS 2008