У меня есть древовидное представление с флажками в c #, я хочу, чтобы, когда пользователь проверяет один узел, все узлы, которые находятся на уровнях ниже автоматического, также проверялись.
Кто-нибудь знает о способе сделать это без запуска с рекурсивной функцией по всему дереву каждый раз, когда пользователь проверяет какой-то узел?
Спасибо
// эта функция возвращает treeView.
public TreeView GetTreeView()
{
getSubject();
// fill the treeview with all subjects.
foreach (Subject subject in subjects)
{
//for each root subject fill all the his children.
if (subject.subjestId == subject.parentSubject)
{
TreeNode node = new TreeNode(subject.subjectString, subject.subjestId, subject.subjestId);
addChild(node, subject.subjestId);
tv.Nodes.Add(node);
}
}
return tv;
}
// for each subject return sub subjects.
private void addChild(TreeNode node, int parentId)
{
foreach (Subject subject in subjects)
{
if (subject.parentSubject == parentId && subject.parentSubject != subject.subjestId)
{
TreeNode childNode = new TreeNode(subject.subjectString, subject.subjestId, subject.subjestId);
addChild(childNode, subject.subjestId);
node.Nodes.Add(childNode);
}
}
}