2017-06-02 78 views
0

在我的项目,我试图创建一个树形列表用户控件并移动节点上下的按钮(上下)的帮助下,使聚焦节点总是在树形列表可见移动节点上下TreeLIist

C#

private void button1_Click(object sender, EventArgs e) 
     { 

      int LastNodeIndex = treeList1.GetNodeIndex(treeList1.Nodes.LastNode); 
      int targetNodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode.PrevNode); 

      if(targetNodeIndex==-1) 
      { 
       treeList1.SetNodeIndex(treeList1.FocusedNode, LastNodeIndex); 
       treeList1.MakeNodeVisible(treeList1.FocusedNode); 
      } 
      else 
      { 
       int nodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode); 
       treeList1.SetNodeIndex(treeList1.FocusedNode, targetNodeIndex); 
       treeList1.MakeNodeVisible(treeList1.FocusedNode); 
      } 

     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      int targetNodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode.NextNode); 
      int nodeIndex = treeList1.GetNodeIndex(treeList1.FocusedNode); 
      treeList1.SetNodeIndex(treeList1.FocusedNode, targetNodeIndex); 
      treeList1.MakeNodeVisible(treeList1.FocusedNode); 

     } 

在该上述代码中,移动节点上下无需父和子。在这个阶段它的工作很好。

如果用户关注根节点并单击按钮,那么使用该索引获取lastnode索引值我将selectednode设置为lastnode位置,即使用户从根节点单击向上按钮,它将移动到最后并使该节点可见在treelist中。

但是,如果选定节点作为特定父级的第一个子节点,它将不会移动到lastchild,同时单击向上按钮。如何实现这一目标?这可能吗?给一些想法做。

回答

0

我找出解决办法,这就是,

C#

if(treeList1.FocusedNode.ParentNode!=null && foucsednodeindex == 0) // check its child node or not 
     { 

      int parentnodeindex = treeList1.GetNodeIndex(treeList1.FocusedNode.ParentNode); 

      int foucsedindex = treeList1.GetNodeIndex(treeList1.FocusedNode); 

      treeList1.SetFocusedNode(treeList1.FocusedNode.ParentNode); 

      int count = treeList1.FocusedNode.Nodes.Count; 


      treeList1.SetFocusedNode(treeList1.FocusedNode.NextVisibleNode); 

      treeList1.SetNodeIndex(treeList1.FocusedNode, count); 
      treeList1.MakeNodeVisible(treeList1.FocusedNode); 

     }