private void setNodeTrue(Node selNode)
{
Node node = selNode.Parent;
if (node != null)
{
node.CheckState = CheckState.Checked;
setNodeTrue(node);
}
}
#endregion
#region 將樹的checkbox選中
private void setNodeStateTrue(Node selNode)
{
if (selNode.CheckBoxVisible)
{
selNode.CheckState = CheckState.Checked;
foreach (Node node in selNode.Nodes)
{
setNodeStateTrue(node);
}
}
}
#endregion
#region 將樹的checkbox取消選中
private void setNodeStateFalse(Node selNode)
{
if (selNode.CheckBoxVisible)
{
selNode.CheckState = CheckState.Unchecked;
foreach (Node node in selNode.Nodes)
{
setNodeStateFalse(node);
}
}
}
#endregion
#region 將樹的checkbox取消選中
private void setNodeFalse(Node selNode)
{
Node nextNode = selNode.NextNode;
Node previousNode = selNode.PrevNode;
Node praNode = selNode.Parent;
if (praNode != null)
{
while (nextNode != null)
{
if (nextNode.Checked)
{
return;
}
nextNode = nextNode.NextNode;
}
while (previousNode != null)
{
if (previousNode.Checked)
{
return;
}
previousNode = previousNode.PrevNode;
}
praNode.CheckState = CheckState.Unchecked;
setNodeFalse(praNode);
}
}
#endregion
#region 單擊樹的checkbox事件 //這個是事件註意了
private void tvDevice_AfterCheck(object sender, AdvTreeCellEventArgs e)
{
Node node = tvDevice.SelectedNode;
//bool bo = node.Checked;
if (node.Checked)
{
setNodeTrue(node);
setNodeStateTrue(node);
}
else
{
setNodeStateFalse(node);
setNodeFalse(node);
}
flag = true;
}
#endregion
//直接復制使用 找到treeview AfterCheck事件綁定 tvDevice_AfterCheck方法就行