110,537
社区成员
发帖
与我相关
我的任务
分享
TreeNode TN = e.Node;//点击的节点,
string Info=TN.Name; //TN.Text 或 TN.Tag 获取点击节点里面存储的信息。
//选择节点的事件,控件自带
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action == TreeViewAction.ByMouse)//判断是否由鼠标触发的
{
TreeNode TN = e.Node;//点击的节点
if (TN.Checked)//若是选中,遍历父节点,所属的父节点应为选中
{
if (TN.Parent != null)
{
TN.Parent.Checked = true;
if (TN.Parent.Parent != null)
{
TN.Parent.Parent.Checked = true;
}
}
DG_Check(TN,true); //本身节点之下还有子节点,遍历,全选中
}
else//若是取消选中
{
DG_Check(TN, false);//本身节点之下还有子节点,遍历,全取消选中
if (TN.Parent != null)
{
//若有父节点,判断此次取消选中后,是否兄弟节点也是没选中?
TreeNode TNP = TN.Parent;
bool YXZ = false;//有选中的,以此来判断否兄弟节点也是没选中
foreach (TreeNode childTN in TNP.Nodes)
{
if (childTN.Checked)
{
YXZ = true;//还有选中的兄弟节点
break;
}
}
TNP.Checked = YXZ;//将遍历结果赋给父节点
}
}
}
}
private void DG_Check(TreeNode TN,bool flag)
{
if (TN.Nodes.Count > 0)
{
foreach (TreeNode childTN in TN.Nodes)
{
childTN.Checked = flag;
DG_Check(childTN,flag);
}
}
}
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
}