实现TreeView父子节点的联动
2014-08-06 10:46
337 查看
使用节点鼠标点击事件
private void ctrLayerTreeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
TreeNode node = e.Node;
this.ctrLayerTreeView.SelectedNode = node;
//递归设置父节点选中状态
SetParentNodeChecked(node);
//递归设置子节点选中状态
SetChildNodeChecked(node);
}
/// <summary>
/// 递归设置父节点选中状态
/// </summary>
/// <param name="ptreeNode">当前节点</param>
public void SetParentNodeChecked(TreeNode ptreeNode)
{
if (ptreeNode.Parent == null) return;
//递归设置父节点选中状态
if (!HasChildChecked(ptreeNode.Parent) && ptreeNode.Checked == false)
ptreeNode.Parent.Checked = false;
else
ptreeNode.Parent.Checked = true;
SetParentNodeChecked(ptreeNode.Parent);
}
/// <summary>
/// 子节点是否有选中
/// </summary>
/// <param name="ptreeNode"></param>
/// <returns></returns>
private bool HasChildChecked(TreeNode ptreeNode)
{
foreach (TreeNode subNode in ptreeNode.Nodes)
{
if (subNode.Checked) return true;
}
return false;
}
/// <summary>
/// 递归设置子节点选中状态
/// </summary>
/// <param name="ptreeNode">当前节点</param>
public void SetChildNodeChecked(TreeNode ptreeNode)
{
foreach (TreeNode treeNode in ptreeNode.Nodes)
{
treeNode.Checked = ptreeNode.Checked;
//递归设置子节点选中状态
SetChildNodeChecked(treeNode);
}
}
http://blog.csdn.net/szstephenzhou/article/details/8739510
private void ctrLayerTreeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
TreeNode node = e.Node;
this.ctrLayerTreeView.SelectedNode = node;
//递归设置父节点选中状态
SetParentNodeChecked(node);
//递归设置子节点选中状态
SetChildNodeChecked(node);
}
/// <summary>
/// 递归设置父节点选中状态
/// </summary>
/// <param name="ptreeNode">当前节点</param>
public void SetParentNodeChecked(TreeNode ptreeNode)
{
if (ptreeNode.Parent == null) return;
//递归设置父节点选中状态
if (!HasChildChecked(ptreeNode.Parent) && ptreeNode.Checked == false)
ptreeNode.Parent.Checked = false;
else
ptreeNode.Parent.Checked = true;
SetParentNodeChecked(ptreeNode.Parent);
}
/// <summary>
/// 子节点是否有选中
/// </summary>
/// <param name="ptreeNode"></param>
/// <returns></returns>
private bool HasChildChecked(TreeNode ptreeNode)
{
foreach (TreeNode subNode in ptreeNode.Nodes)
{
if (subNode.Checked) return true;
}
return false;
}
/// <summary>
/// 递归设置子节点选中状态
/// </summary>
/// <param name="ptreeNode">当前节点</param>
public void SetChildNodeChecked(TreeNode ptreeNode)
{
foreach (TreeNode treeNode in ptreeNode.Nodes)
{
treeNode.Checked = ptreeNode.Checked;
//递归设置子节点选中状态
SetChildNodeChecked(treeNode);
}
}
http://blog.csdn.net/szstephenzhou/article/details/8739510
相关文章推荐
- Asp.Net TreeView实现父子节点联动效果
- vs2005 TreeView 实现父子节点,复选框联动.
- TreeView父子联动效果保持节点状态一致
- Ext带复选框的Tree实现父子节点联动功能
- 用客户端JS实现微软TreeView控件父子节点联选!
- javascript-TreeView父子联动效果保持节点状态一致
- TreeView父子联动效果保持节点状态一致
- TreeList实现父子节点联动
- 带checkbox的treeview父子节点的联动选择
- TreeView父子联动效果保持节点状态一致
- 用客户端JS实现微软TreeView控件父子节点联选!
- treeview 父子节点联动
- (转)TreeView父子联动效果保持节点状态一致
- javascript-TreeView父子联动效果保持节点状态一致
- TreeView父子联动效果保持节点状态一致
- 【转】C# webform中treeview的checkbox勾选父子联动事件如何实现?
- treeview 父子节点联动
- Asp.Net2.0中TreeView使用javascript客户端实现选择节点联动的脚本
- TreeView控件的CheckBox自动实现父子节点递归选定
- TreeView父子联动效果保持节点状态一致