2017-06-02 84 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); 

     }