C#中TreeView实现适合两级节点的选中节点方法
本文实例讲述了C#中TreeView实现适合两级节点的选中节点方法。分享给大家供大家参考。具体如下:
classTreeViewChecked
{
boolisfirst=true;
publicTreeViewChecked(TreeViewtreeView)
{
treeView.AfterCheck+=newTreeViewEventHandler(treeView_AfterCheck);
treeView.AfterSelect+=newTreeViewEventHandler(treeView_AfterSelect);
}
///<summary>
///点击文字,选中checkbox
///</summary>
///<paramname="sender"></param>
///<paramname="e"></param>
voidtreeView_AfterSelect(objectsender,TreeViewEventArgse)
{
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>
///<paramname="sender"></param>
///<paramname="e"></param>
voidtreeView_AfterCheck(objectsender,TreeViewEventArgse)
{
CheckTreeNode(e.Node);
}
///<summary>
///选中子节点,勾选父节点,选中父节点,勾选子节点
///</summary>
///<paramname="node"></param>
privatevoidCheckTreeNode(TreeNodenode)
{
node.TreeView.AfterCheck-=newTreeViewEventHandler(treeView_AfterCheck);
//如果不等于null,说明选择的是子节点
if(node.Parent!=null)
{
TreeNodeparent=node.ParentasTreeNode;
//如果该节点是选中的
if(node.Checked)
{
//判断其父节点是否被选中,如果没有被选中则选中它
if(parent.Checked==false)
{
parent.Checked=true;
}
}
else
{
boolischecked=false;
foreach(TreeNodechildinparent.Nodes)
{
if(child.Checked)
{
ischecked=true;
break;
}
}
if(ischecked)
parent.Checked=true;
else
parent.Checked=false;
}
}//如果等于null,说明选择的是根节点
else
{
foreach(TreeNodechildinnode.Nodes)
{
child.Checked=node.Checked;
}
}
node.TreeView.AfterCheck+=newTreeViewEventHandler(treeView_AfterCheck);
}
}
希望本文所述对大家的C#程序设计有所帮助。