web-dev-qa-db-ja.com

選択したノードがツリービューの子ノードか親ノードかをどのように判断できますか?

選択したノードがTreeViewコントロールの子ノードか親ノードかを確認するにはどうすればよいですか?

20
Priyanka

そのようなチェックを実装する正確な方法は、「子」ノードと「親」ノードの定義方法によって異なります。ただし、重要な情報を提供する各TreeNodeオブジェクトによって公開される2つのプロパティがあります。

  1. Nodes property は、特定のノードに含まれるTreeNodeオブジェクトのコレクションを返します。したがって、選択したノードに含まれる子ノードの数を確認するだけで、それが親ノードであるかどうかを判断できます。

    if (selectedNode.Nodes.Count == 0)
    {
        MessageBox.Show("The node does not have any children.");
    }
    else
    {
        MessageBox.Show("The node has children, so it must be a parent.");
    }
    
  2. 詳細情報を取得するには、Parentプロパティの値を調べることもできます。この値がnullの場合、ノードはTreeViewのルートレベルにあります(親はありません)。

    if (selectedNode.Parent == null)
    {
        MessageBox.Show("The node does not have a parent.");
    }
    else
    {
        MessageBox.Show("The node has a parent, so it must be a child.");
    }
    
32
Cody Gray

TreeNode.Parent このプロパティ。

その値がnull- referenceの場合、ノードはルートレベルにあります。

TreeView treeView = ...
var selectedNode = treeView.SelectedNode;

if(selectedNode ! = null)
{
    if(selectedNode.Parent == null)  
    {     
        // Root-level node  
    }
    else 
    {     
        // Child node
    } 
}
else
{
    // A node hasn't been selected.
}
7
Ani

これを試して

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{  
   Label1.Text = "";
   if(e.Node.Parent!= null && 
     e.Node.Parent.GetType() == typeof(TreeNode) )
   {
      Label1.Text = "Parent: " + e.Node.Parent.Text + "\n"
         + "Index Position: " + e.Node.Parent.Index.ToString();
   }
   else
   {
      Label1.Text = "This is parent node.";
   }
}
1
Moory Pc

ルートノードは親TreeViewです。タイプを比較するかどうかを確認できます->

if (currentNode.Parent.GetType() == typeof(TreeView)) 
{
    // root node
}
0
HuckFin.7b