以下测试代码,button1_Click实现查找定位节点的功能,并自动展开树到目标节点,但目标节点没有选中!
当把button1_Click事件的3行代码移到Form1_Load事件的结尾,则目标节点是选中状态的!
请问要使button1_Click查找后能选中节点,应如何改写? 谢谢!        private void Form1_Load(object sender, EventArgs e)
        {
            // 建测试树
            TreeNode node0 = new TreeNode();
            node0.Text = "000";            TreeNode node11 = new TreeNode();
            node11.Text = "aaa";
            node0.Nodes.Add(node11);            TreeNode node111 = new TreeNode();
            node111.Text = "111";
            node11.Nodes.Add(node111);            TreeNode node112 = new TreeNode();
            node112.Text = "112";
            node11.Nodes.Add(node112);            TreeNode node22 = new TreeNode();
            node22.Text = "bbb";
            node0.Nodes.Add(node22);            TreeNode node221 = new TreeNode();
            node221.Text = "221";
            node22.Nodes.Add(node221);            TreeNode node222 = new TreeNode();
            node222.Text = "222";
            node22.Nodes.Add(node222);            TreeNode node223 = new TreeNode();
            node223.Text = "223";
            node22.Nodes.Add(node223);            TreeNode node2231 = new TreeNode();
            node2231.Text = "cxcai";
            node223.Nodes.Add(node2231);            TreeNode node33 = new TreeNode();
            node33.Text = "ccc";
            node0.Nodes.Add(node33);            treeView1.Nodes.Add(node0);
        }       // 节点查找函数
        private TreeNode FindNode(TreeNode tnParent, string strValue, string strType)
        {
            if (tnParent == null)
            { return null; }            if (tnParent.Text.IndexOf(strValue) > -1)
            { return tnParent; }            TreeNode tnRet = null;
            foreach (TreeNode tn in tnParent.Nodes)
            {
                tnRet = FindNode(tn, strValue, strType);
                if (tnRet != null)
                { break; }
            }
            return tnRet;
        }        private void button1_Click(object sender, EventArgs e)
        {
            TreeNode nodexxx = new TreeNode();
            nodexxx = FindNode(treeView1.Nodes[0], "112", "");            treeView1.SelectedNode = nodexxx;
        }

解决方案 »

  1.   

    treeView1.HideSelection = false;
      

  2.   

    本帖最后由 bdmh 于 2013-03-22 11:55:35 编辑
      

  3.   

    @bdmh,我希望的结果是这样选中的喔,跟鼠标点上去选中一样.
      

  4.   

    private void button1_Click(object sender, EventArgs e)
            {
                TreeNode nodexxx = new TreeNode();
                nodexxx = FindNode(treeView1.Nodes[0], "112", "");
     
                treeView1.SelectedNode = nodexxx;
    treeView1.Focus();
            }
      

  5.   

    对头,你点击的时候实际是按钮获得了焦点,所以需要treeView.Focus()
      

  6.   

    依5楼方法可以,非常感谢lye2000000_super!