本帖最后由 jhlz1968 于 2010-10-21 09:43:09 编辑

解决方案 »

  1.   

    如果是要源码没有,要思路还可以,点击3之后,你可以查找它的下一个,貌似是nextslibing
    找到就好,没找到你要找这个节点的父节点,用父节点的nextslibing如果没找到那么就是最后一个节点,如果有,那么就要选中,再点就要在当前的父节点下面找子节点了。
      

  2.   

                TreeView tv;
                tv.AfterSelect += new TreeViewEventHandler(tv_AfterSelect);
                //Button: tv.SelectedNode = tv.SelectedNode.NextVisibleNode;
                //Button: tv.SelectedNode = tv.SelectedNode.PrevVisibleNode;
            }        void tv_AfterSelect(object sender, TreeViewEventArgs e)
            {
                e.Node.ExpandAll();
            }
      

  3.   

    记住3和4的主键,在你的treeview数据结构中调整他们就好了,逻辑要自己整理一下
      

  4.   


    tv.SelectedNode = tv.SelectedNode.NextVisibleNode;
    tv.SelectedNode = tv.SelectedNode.PrevVisibleNode;这两句基本可以实现我要的功能。但如果到了第一个父节点,tv.SelectedNode = tv.SelectedNode.PrevVisibleNode;就会出错
    到了最后一个子节点 tv.SelectedNode.NextVisibleNode;也会出错。怎样判断 是第一个父节点 和最后一个 子节点呢?
      

  5.   

    or:if(tv.SelectedNode.PrevVisibleNode!=null)