TreeView常用方法随记
//展开所有子节点
foreach(TreeNode node in this.TreeV_Menu.Nodes)
{
node.ExpandAll();
}
//设置滚动条在顶端
if (this.TreeV_Menu.Nodes.Count > 0)
{
this.TreeV_Menu.Nodes[0].EnsureVisible(); //确保树节点可见,并在必要时展开树节点和滚动树视图控件
}
//获取指定节点
private TreeNode Sub_GetTreeNode(string Str_Tag)
{
TreeNode TreeNode_Result = null;
foreach (TreeNode tn in this.TreeV_Menu.Nodes)
{
if (Str_Tag == tn.Tag.ToString())
{
TreeNode_Result = tn; break;
}
}
return TreeNode_Result;
}
//检查子节点选中状态
private void CheckChild(TreeNode node)
{
if (node.Nodes.Count != 0)
{
foreach (TreeNode item in node.Nodes)
{
item.Checked = node.Checked; this.CheckChild(item);
}
}
}
//检查父节点选中状态
private void CheckParent(TreeNode node)
{
if (node.Parent != null)
{
int count = 0;
foreach (TreeNode item in node.Parent.Nodes)
{
if (item.Checked)
{
count++;
}
}
node.Parent.Checked = (count > 0);
this.CheckParent(node.Parent);
}
}
//鼠标单击节点发生的事件,选择框选中操作
private void TreeV_Menu_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if(e.Node.Parent == null)
{
if (e.X > 25 && e.X < 40)
{
this.CheckChild(e.Node);
}
}
else
{
this.CheckParent(e.Node);
}
}
浙公网安备 33010602011771号