由于载入到TREEVIEW的数据量过大,载入耗时很长,想实现载入时只载入第一层,再点击节点时再从数据库载入选中节点的子节点的内容的效果,这样更好。问题: 1.实现这样的功能是要用到afterSelect事件吗?
      2.如果打开某个节点下还有子节点,如何做到不载入子节点却在这个节点的左边显示+号 ?

解决方案 »

  1.   

    先在TreeView中加入父节点,在后添加控件的NodeMouseClick事件,在事件中写上加载子节点的代码,如果有多和父节点的话:
     private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
            {
                if (e.Node.Text == "父节点")
                {
                    e.Node.Nodes.Add("1");
                    e.Node.Nodes.Add("2");
                    e.Node.Nodes.Add("3");
                    e.Node.Nodes.Add("4");
                    e.Node.Nodes.Add("5");
                    e.Node.Expand();
                }
            }
      

  2.   

    1.afterSelect可以实现,不过你得处理很多其他细节问题,到时候你就知道了,2.加上一个假的子节点,名字叫“等待加载子节点...”,
      

  3.   

    处理第一层节点的afterSelect事件,然后递归绑定节点及节点的afterSelect事件。
      

  4.   

    在TreeView的BeforeExpand事件中获取当前要展开的节点.加载当前节点下的子节点和子节点的一级节点.只能这样了.如果设置假节点的话,你又不确定哪一个改有假节点.这样是只加载当前节点下的二级节点,一定程度上减少了数据量