好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#中TreeView实现适合两级节点的选中节点方法

本文实例讲述了C#中TreeView实现适合两级节点的选中节点方法。分享给大家供大家参考。具体如下:

?

class TreeViewChecked

{

   bool isfirst = true ;

   public TreeViewChecked(TreeView treeView)

   {

    treeView.AfterCheck += new TreeViewEventHandler(treeView_AfterCheck);

    treeView.AfterSelect += new TreeViewEventHandler(treeView_AfterSelect);

   }

   /// <summary>

   /// 点击文字,选中checkbox

   /// </summary>

   /// <param name="sender"></param>

   /// <param name="e"></param>

   void treeView_AfterSelect( object sender, TreeViewEventArgs e)

   {

    if (e.Node.Checked)

     e.Node.Checked = false ;

    else

     e.Node.Checked = true ;

    if (isfirst)

    {

     isfirst = false ;

     e.Node.TreeView.Nodes[0].Checked = false ;

    }

   }

   /// <summary>

   /// 选中子节点,勾选父节点,选中父节点,勾选子节点

   /// </summary>

   /// <param name="sender"></param>

   /// <param name="e"></param>

   void treeView_AfterCheck( object sender, TreeViewEventArgs e)

   {

    CheckTreeNode(e.Node);

   }

   /// <summary>

   /// 选中子节点,勾选父节点,选中父节点,勾选子节点

   /// </summary>

   /// <param name="node"></param>

   private void CheckTreeNode(TreeNode node)

   {

    node.TreeView.AfterCheck -= new TreeViewEventHandler(treeView_AfterCheck);

    //如果不等于null,说明选择的是子节点

    if (node.Parent != null )

    {

     TreeNode parent = node.Parent as TreeNode;

     //如果该节点是选中的

     if (node.Checked)

     {

      //判断其父节点是否被选中,如果没有被选中则选中它

      if (parent.Checked == false )

      {

       parent.Checked = true ;

      }

     }

     else

     {

      bool ischecked = false ;

      foreach (TreeNode child in parent.Nodes)

      {

       if (child.Checked)

       {

        ischecked = true ;

        break ;

       }

      }

      if (ischecked)

       parent.Checked = true ;

      else

       parent.Checked = false ;

     }

    } //如果等于null,说明选择的是根节点

    else

    {

     foreach (TreeNode child in node.Nodes)

     {

      child.Checked = node.Checked;

     }

    }

    node.TreeView.AfterCheck += new TreeViewEventHandler(treeView_AfterCheck);

   }

}

希望本文所述对大家的C#程序设计有所帮助。

dy("nrwz");

查看更多关于C#中TreeView实现适合两级节点的选中节点方法的详细内容...

  阅读:93次