Ну, флажок в виде дерева избавит вас от многих хлопот, потому что вы можете просто использовать LINQ, чтобы проверять или снимать отметку со всех узлов, когда на узел нажимают, обрабатывая событие Click (скажем, clickedItem
- это узел, который былclicked:
foreach (TreeNode node in clickedItem.Nodes.ToList())
{
node.IsSelected = clickedItem.IsSelected;
}
Кроме того, с точки зрения пользовательского интерфейса имеет смысл TreeView
. Если вы абсолютно настаиваете на использовании отдельных флажков, то вы просто строите дерево из CheckBox
элементов в памятивозможно, используя что-то вроде этого образца Tree<T>
тип данных , а затем, когда вы нажимаете на флажок, просто рекурсивно перемещайтесь по дереву, пока не отметите каждый флажок под этим.
Но подумайте о том, что произойдет с вашим приложением. У вас может быть так много вариантов в будущем, что вам понадобится способ программно добавить их. Возможно, вам потребуется прокрутка. Возможно, вам придется сделать все это настраиваемым.добавив все это, вы просто заново внедрили TreeView
.