選択したノードがTreeView
コントロールの子ノードか親ノードかを確認するにはどうすればよいですか?
そのようなチェックを実装する正確な方法は、「子」ノードと「親」ノードの定義方法によって異なります。ただし、重要な情報を提供する各TreeNode
オブジェクトによって公開される2つのプロパティがあります。
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.");
}
詳細情報を取得するには、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.");
}
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.
}
これを試して
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.";
}
}
ルートノードは親TreeViewです。タイプを比較するかどうかを確認できます->
if (currentNode.Parent.GetType() == typeof(TreeView))
{
// root node
}