2009-08-25 6 views

答えて

0

を下るべきであるノード上でUP_button上のクリックは、選択したときに私が欲しい1つのツリービューと2ボタン を持っている:

private void SelectNode(TreeNode node) 
{ 
    if(node.IsSelected) 
    { 
     // Determine which TreeNode to select. 
     switch(myComboBox.Text) 
     { 
      case "Previous": 
       node.TreeView.SelectedNode = node.PrevNode; 
       break; 
      case "PreviousVisible": 
       node.TreeView.SelectedNode = node.PrevVisibleNode; 
       break; 
      case "Next": 
       node.TreeView.SelectedNode = node.NextNode; 
       break; 
      case "NextVisible": 
       node.TreeView.SelectedNode = node.NextVisibleNode; 
       break; 
      case "First": 
       node.TreeView.SelectedNode = node.FirstNode; 
       break; 
      case "Last": 
       node.TreeView.SelectedNode = node.LastNode; 
       break; 
     } 
    } 
    node.TreeView.Focus(); 
} 

EDIT
もちろん、ボタンのクリックハンドラでは、 "Previous"と "Next"、 "PreviousVisible"と "NextVisible"のケースを使用します。このコードでは、コンボボックスから「アクション」を選択してボタンを押すことを前提としています。

EDIT 2
ちょうどあなたが(ない選択)ダウンノードを移動しようとしている場合には、次のようなものを使用することができます。

TreeNode sourceNode = treeView.SelectedNode; 

if (sourceNode.Parent == null) 
{ 
    return; 
} 

treeView.Nodes.Remove(sourceNode); 
treeView.Nodes.Insert(sourceNode.Index + 1, sourceNode); 

これは、現在のノードを移動します1つダウン。いくつかの特別なケースを処理するために、いくつかのコードを書く必要があることに注意してください(例えば、最初のノードではどうなりますか?ツリーのすべてのレベルで機能しますか?)。

+0

彼は選択したくない、彼は上下にノードを移動したい! –

+0

いいえ、彼/彼女は言う: "UP_buutten、上のノードを選択"をクリックします。彼/彼女がノードを動かすことを望むなら、問題は言い直されるべきです。 –

0

使用できるノードのプロパティに建てられたいくつかの素晴らしいが、あなたが使用するまでのため、あります

TreeView.SelectedNode = TreeView.SelectedNode.PrevNode; 

とダウンのために:

TreeView.SelectedNode = TreeView.SelectedNode.NextNode; 
+0

答えは で私の問題を解決します。 node = treeView1.SelectedNode; treeView1.SelectedNode = node.NextVisibleNode; node.TreeView.Focus(); } – Mary

0

私の問題は解決しました。答えASP.NETツリービューのために

private void button1_Click(object sender, EventArgs e) 
{ 
    TreeNode node = new TreeNode(); 
    node = treeView1.SelectedNode; 
    treeView1.SelectedNode = node.NextVisibleNode; 
    node.TreeView.Focus(); 
} 
+0

素晴らしいですが、解答の1つを受け入れた解決策として受け入れるのはどうですか? –

+0

私はあなたの最初の答えの投げ売りを与える thanx thorsten-dittmar – Mary

0

ため
ありがとう:

/// <summary> 
    /// MoveComponentUpLinkButton_Click 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    protected void MoveComponentUpLinkButton_Click(object sender, EventArgs e) 
    { 
     // Get the selected node 
     TreeNode sourceNode = this.MyTreeview.SelectedNode; 
     if (sourceNode != null) 
     { 
      // Get the selected node's parent 
      TreeNode parentNode = this.MyTreeview.SelectedNode.Parent; 
      if (parentNode != null) 
      { 
       int index = -1; 

       // For each node in selected nodes parent 
       for (int j = 0; j < parentNode.ChildNodes.Count; j++) 
       { 
        // If we found the selected node 
        if (sourceNode == parentNode.ChildNodes[j]) 
        { 
         // save index 
         index = j; 
         break; 
        } 
       } 

       // If node is not already at top of list 
       if (index > 0) 
       { 
        // Move it up 
        parentNode.ChildNodes.RemoveAt(index); 
        parentNode.ChildNodes.AddAt(index - 1, sourceNode); 
        sourceNode.Selected = true; 
       } 
      } 
     } 
    } 

    /// <summary> 
    /// MoveComponentDownLinkButton_Click 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    protected void MoveComponentDownLinkButton_Click(object sender, EventArgs e) 
    { 
     // Get the selected node 
     TreeNode sourceNode = this.MyTreeview.SelectedNode; 
     if (sourceNode != null) 
     { 
      // Get the selected node's parent 
      TreeNode parentNode = this.MyTreeview.SelectedNode.Parent; 
      if (parentNode != null) 
      { 
       int index = -1; 

       // For each node in selected nodes parent 
       for (int j = 0; j < parentNode.ChildNodes.Count; j++) 
       { 
        // If we found the selected node 
        if (sourceNode == parentNode.ChildNodes[j]) 
        { 
         // save index 
         index = j; 
         break; 
        } 
       } 

       // If node is not already at botton of list 
       if (index < parentNode.ChildNodes.Count - 1) 
       { 
        // Move it down 
        parentNode.ChildNodes.RemoveAt(index); 
        parentNode.ChildNodes.AddAt(index + 1, sourceNode); 
        sourceNode.Selected = true; 
       } 
      } 
     } 
    } 
関連する問題