徐胜利

导航

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);

   }

}

posted on 2012-09-18 17:07  xuvictory  阅读(165)  评论(0)    收藏  举报