我在 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)。
有趣的是,我设置的任何其他子节点属性(比如 BackColor)都会生效。
我相信递归不是问题,似乎可以通过调试 MessageBoxes 进行验证。
有任何想法吗?
问候,吉姆
这是一个winform应用程序。
我删除了所有 MessageBox 调用,没有任何变化;响应于被检查的父节点,子节点仍未被检查。
我删除了我的 AfterCheck 例程,并使用了一个引用的逐字记录,结果相同;未检查子节点以响应正在检查的父节点。
我已经玩了几个小时没有运气。
奇怪的是,我更改的任何其他属性(如 BackColor)都会生效。
我确实在网上看到了一个模糊的参考,说明这是 Win7 中的一个问题,但我再也找不到它了。无论如何,我使用的是 Vista、.Net 3.5 和 C# Express 2008。
感谢您的输入。
问候,吉姆