多くTreeView
のノードを含むデータベースからデータが取り込まれています。各ノードにはいくつかの子があり、2 つの深さのような固定された役割はありません。非常に深い場合があります。
TreeView
CheckBoxes
areを想像してみてください。一度に 1 つのノードをチェックしRadioButtons
たいだけです。TreeView
イベントを試してみAfterCheck
ましBeforeCheck
たが、永久ループに陥ってしまいました。どうすればよいですか?
チェックしたノードをチェックしたままにして、他のすべてのノードのチェックを外したいのですが、できません。あなたのスマートポイントを待っています。ありがとう。
これが私が試したコードですが、例外が発生しました.StackOverflowStackOverFlow
でチェックしてくださいと言っているのかもしれません: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);
}
}