Как определить, является ли выбранный узел дочерним или родительским узлом в TreeView?
Как я могу узнать, является ли выбранный узел дочерним узлом или родительским узлом в TreeView
контроля?
5 ответов
точно, как вы реализуете такую проверку, зависит от того, как вы определяете "дочерние" и "родительские" узлы. Но есть два свойства, выставленные каждым TreeNode
объект, предоставляющий важную информацию:
-
на
Nodes
свойства возвращает коллекцию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
-ссылка, узел находится на корневом уровне.
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
}