您的位置:首页 > 其它

模仿windows7添加删除程序的treeview中的checkbox效果(转载)

2011-05-03 13:19 375 查看
//TreeView的AfterCheck事件

private void TvNodeInfo_AfterCheck(object sender, TreeViewEventArgs e)
{
CheckControl(e);
}

public void CheckControl(TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
{
if (e.Node != null && !Convert.IsDBNull(e.Node))
{
CheckParentNode(e.Node);
if (e.Node.Nodes.Count > 0)
{
CheckAllChildNodes(e.Node, e.Node.Checked);
}
}
}
}

private void CheckAllChildNodes(TreeNode treeNode, bool p)
{
foreach (TreeNode tn in treeNode.Nodes)
{
tn.Checked = p;

if (tn.Nodes.Count > 0)
{
CheckAllChildNodes(tn, p);
}
}
}

private void CheckParentNode(TreeNode treeNode)
{
bool bChecked = false;

if (treeNode.Parent != null)
{
foreach (TreeNode node in treeNode.Parent.Nodes)
{
if (node.Checked)
{
bChecked = true;
break;
}
}

if (bChecked)
{
treeNode.Parent.Checked = true;
CheckParentNode(treeNode.Parent);
}
else
{
treeNode.Parent.Checked = false;
CheckParentNode(treeNode.Parent);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: