微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决不能在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
动作。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。