My requirement is that if a parent node is checked, all the children must be checked. We like the tristate checkbox functionality. So, what we'd like is when the parent is checked, the childnodes are disabled so that they may not be unchecked. This causes a problem with expanding and collapsing, but I've seen that there is a workaround for that. My problem comes with unchecking the parent. It unchecks and then comes right back again. There is also a problem with enabling nodes again once disabled, i.e. if the node is being unchecked due to CheckChildNodes property, the NodeCheck event is not fired and it never gets enabled again.