我有嵌套的组框,它在逻辑上代表我的应用程序中的嵌套数据结构。假设我有这样的结构:
Dev1
- CDev1
- CDev2
- ICDev1
- ICDev2
我有复选框来启用/禁用每个Devs。我想将子复选框的CheckState绑定到父复选框的CheckState。我希望机制像这样工作:当我检查CDev2,ICDev1& ICDev2会自动检查。但是当我取消选中ICDev1时,CDev2会保持自己的状态。基本上,我希望将这些事件传播给子节点而不是父节点,就像单向绑定一样。
我正在使用.Net 2.0 SP2。我不知道这是否可能,因此如果你向我展示一些关于此的指示,我会很高兴。如果不可能,我将为所有复选框实现事件处理程序。
答案 0 :(得分:5)
试试这个:
childCheckBox.DataBindings.Add("Checked", parentCheckBox, "Checked");
您可能还想查看TreeView
控件,它可以选择在每个项目旁边显示CheckBox
。
答案 1 :(得分:0)
理论上,这可以在WPF中使用双向绑定(这里是tutorial on data binding in WPF)。我不认为你可以使用WinForms自动完成。如果您正在使用WinForms,则必须捕获并处理事件以手动修改该类型的状态更改。
答案 2 :(得分:0)
绑定不会解决您的问题。如果你找到一种方法将ICDev1和ICDev2绑定到CDev2,这意味着当选中ICDev1时,ICDev1和ICDev2都会被检查,反之亦然。如果这是你想要的,你不需要ICDev1,ICDev2的复选框,仅用于CDev2。如果您希望用户检查ICDev1,但取消选中ICDev2,则需要实现事件处理程序。
答案 3 :(得分:0)
在WPF中是可能的,但我认为winforms不可能,因为在WinForms中没有属性更新事件机制,如依赖属性或INotifyPropertyChanged
答案 4 :(得分:0)