无法在 AfterCheck 事件中设置 TreeNode 的 Checked 属性
本文关键字:TreeNode Checked 属性 设置 AfterCheck 事件 | 更新日期: 2023-09-27 17:57:23
我在Vista上的C# 2008(.Net 3.5)中有一个简单的TreeView(几个父母和1个级别的孩子)。
在 AFterCheck 例程中,我尝试根据用鼠标单击父节点时父节点的状态设置/取消设置子节点的 Checked 属性。
使用 MessageBoxes,我可以看到输入的事件例程和子节点的循环,如果选中父节点,则代码
childnode.Checked = parentNode.Checked;
通过 MessageBox.Show(childnode.选中 + " " + 父节点。执行代码后显示"False True",并且子复选框在树视图中保持未选中状态。
我尝试了网络上发现的几种变体,结果相同。 我甚至尝试了替代的TreeView(MWControls),结果完全相同。
有趣的是,我设置的任何其他子节点属性(例如 BackColor)都会生效。
我相信递归不是问题,并且似乎已通过调试消息框进行了验证。
有什么想法吗?
问候吉姆
这是一个通知应用程序。
我删除了所有 MessageBox 调用,没有更改;子节点仍未检查以响应正在检查的父节点。
我删除了我的 AfterCheck 例程,并使用了一个逐字引用的例程,结果相同;子节点未检查以响应正在检查的父节点。
我已经玩了几个小时,但没有运气。
奇怪的是,我更改的任何其他属性(如 BackColor)都会生效。
我确实在网络上看到了一个晦涩的参考,认为这是Win7中的一个问题,但我再也找不到了。无论如何,我使用的是Vista,.Net 3.5和C# Express 2008。
感谢您的输入。
问候吉姆
此示例可以满足您的需求。很可能您的代码不起作用,因为设置子项的 Checked 属性会再次传播事件,并且您没有像链接到的代码那样检查Unknown
操作。