나는 노드가 많은 데이터베이스에서 채워진 TreeView
을 가지고 있으며 각 노드에는 자식이있을 수 있으며 2 depthes와 같은 고정 된 역할이 없으므로 매우 깊을 수 있습니다.TreeView에서 한 번에 하나의 체크 된 노드
TreeView
CheckBoxes
이 RadioButtons
이라고 가정하면, TreeView
은 한 번에 하나의 체크 노드 만 갖기를 원합니다. AfterCheck
및 BeforeCheck
이벤트를 시도했지만 영원히 루프에 빠지면 어떻게해야합니까?
체크 된 노드를 계속 체크하고 모든 다른 노드를 선택 취소 할 수는 있지만 그럴 수는 없습니다. 당신의 스마트 포인트를 기다리고 있습니다. 감사. 여기
내가 시도 코드입니다하지만StackOverFlow
제외하고 결국, 나는 그것을 가서
StackOverflow에 그것을 확인 말하는 어쩌면 생각 : D 여기
private void tvDepartments_AfterCheck(object sender, TreeViewEventArgs)
{
List<TreeNode> nodes = new List<TreeNode>();
if (rdSubDepartments.Checked)
CheckSubNodes(e.Node, e.Node.Checked);
else if (rdSingleDepartment.Checked)
{
foreach (TreeNode node in tvDepartments.Nodes)
{
if (node != e.Node)
node.Checked = false;
}
}
}
public void CheckSubNodes(TreeNode root, bool checkState)
{
foreach (TreeNode node in root.Nodes)
{
node.Checked = checkState;
if (node.Nodes.Count > 0)
CheckSubNodes(node, checkState);
}
}
당신이 손에 귀하의 질문에 관련된 어떤 코드를 현재 가지고 게시 할 경우 마흐디 그것이 더 나은 서비스를 제공 할 .. – MethodMan
난 당신이 올바른 방향으로 묶어 생각합니다. 코드를 게시하십시오. – Rafal
'private void node_AfterCheck (object sender, TreeViewEventArgs e)'를 표시해주세요.이 이벤트는 방금 강조한 이벤트가 2 개 필요하고,'private void CheckAllChildNodes (TreeNode treeNode, bool nodeChecked)와 같은 메소드 Signature가있는 이벤트입니다. '또한 if 부모 노드에 ChildNodes가 있습니다. 코드를 게시 할 때까지 기다리는 foreach {} 루프를 수행해야합니다. 확인했습니다. – MethodMan