多くTreeViewのノードを含むデータベースからデータが取り込まれています。各ノードにはいくつかの子があり、2 つの深さのような固定された役割はありません。非常に深い場合があります。
TreeView CheckBoxesareを想像してみてください。一度に 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);
}
}