【发布时间】:2011-08-06 18:53:11
【问题描述】:
如何判断选中的节点是TreeView控件中的子节点还是父节点?
【问题讨论】:
标签: c# .net winforms treeview treenode
如何判断选中的节点是TreeView控件中的子节点还是父节点?
【问题讨论】:
标签: c# .net winforms treeview treenode
对于根节点是父TreeView..可以检查我们是否比较类型->
if (currentNode.Parent.GetType() == typeof(TreeView))
{
// root node
}
【讨论】:
试试这个
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.SelectedNode == null
是最好的选择。
【讨论】:
您可以为此使用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.
}
【讨论】:
具体如何实施此类检查取决于您如何定义“子”和“父”节点。但是每个TreeNode 对象都有两个提供重要信息的属性:
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.");
}
【讨论】: