首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

TreeView查找选中的有关问题,求高手帮忙

2013-03-27 
TreeView查找选中的问题,求高手帮忙.以下测试代码,button1_Click实现查找定位节点的功能,并自动展开树到目

TreeView查找选中的问题,求高手帮忙.
以下测试代码,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;
        }


[解决办法]
private void button1_Click(object sender, EventArgs e)
        {
            TreeNode nodexxx = new TreeNode();
            nodexxx = FindNode(treeView1.Nodes[0], "112", "");
 
            treeView1.SelectedNode = nodexxx;
treeView1.Focus();
        }
[解决办法]
对头,你点击的时候实际是按钮获得了焦点,所以需要treeView.Focus()

热点排行