我正在用c#制作一个windows应用程序。
我想使用windows 7控制面板程序功能中的复选框。
- 如果树的子复选框都没有被选中,那么父复选框应该被填充
- 如果选中了所有子项,则应选中父复选框
- 如果所有子项都未选中,则父复选框也应取消选中。
我使用单独的复选框(如checkboxImageList
,在谷歌中找到),而不是treeview
复选框。
好吧,一个树视图复选框会节省你很多麻烦,因为你可以使用LINQ来检查或取消选中所有节点当一个节点被点击时,通过处理点击事件(让我们说clickedItem
是被点击的节点:
foreach (TreeNode node in clickedItem.Nodes.ToList())
{
node.IsSelected = clickedItem.IsSelected;
}
同样,从用户界面的角度来看,TreeView
是有意义的。如果您绝对坚持使用单个复选框,那么您只需在内存中构建CheckBox
项的树,也许使用类似示例Tree<T>
数据类型的东西,然后当您单击复选框时,只需递归地遍历树,直到选中该复选框下的每个框。
但是考虑一下你的应用程序会发生什么。将来你可能会有很多选项,你需要一种方式来编程地添加它们。你可能需要滚动。您可能需要使整个东西可配置。一旦你添加了所有这些,你就可以重新实现TreeView
了。
也许你最好使用TreeView
。下面是一个TreeView
单独管理中间检查状态的示例。