不能在AfterCheck事件中设置TreeNode的Checked属性

问题描述

| 我在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
动作。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...