问题描述
|
我在Vista上的C#2008(.Net 3.5)中有一个简单的TreeView(每个父母有几个孩子,每个孩子有1个孩子)。
在AFterCheck例程中,我试图根据父节点的状态(用鼠标单击)设置/取消子节点的Checked属性。
使用MessageBoxes,我可以看到输入的事件例程以及子节点之间的循环,如果选中了父节点,则代码
childnode.Checked = parentNode.Checked;
通过MessageBox.Show(childnode.Checked + \“ \” + parentNode.Checked)显示;执行代码后,显示\“ False True \”,并且TreeView中的子复选框保持未选中状态。
我尝试了在网络上找到的几种变体,结果相同。我什至尝试了替换TreeView(MWControls)并获得完全相同的结果。
有趣的是,我设置的任何其他childnode属性(例如BackColor)都会生效。
我认为递归不是问题,似乎已通过调试MessageBoxes进行了验证。
有任何想法吗?
问候,
吉姆
这是一个winform应用程序。
我删除了所有MessageBox调用,没有任何更改。仍未检查子节点以响应检查父节点。
我删除了AfterCheck例程,并使用了一个引用的verbatum,结果相同。子节点未检查以响应检查父节点。
我玩了几个小时没有运气。
奇怪的是,我更改的任何其他属性(如BackColor)都生效。
我确实在网络上看到一个晦涩的参考文献,指出这是Win7中的一个问题,但我找不到它。无论如何,我正在使用Vista,.Net 3.5和C#Express 2008。
感谢您的输入。
问候,
吉姆
解决方法
这个例子可以满足您的需求。您的代码很可能无法正常工作,因为设置子级的Checked属性会再次传播该事件,并且您不会像链接到的代码那样检查
Unknown
动作。