无法在AfterCheck事件中设置TreeNode的Checked属性

时间:2011-05-24 03:10:25

标签: c# treeview checked

我在Vista上的C#2008(.Net 3.5)中有一个简单的TreeView(几个父母和一个孩子级别)。

在AFterCheck例程中,我试图根据用鼠标点击父节点时父节点的状态来设置/取消设置子节点的Checked属性。

使用MessageBoxes,我可以看到输入的事件例程和循环子节点,如果选中了父节点,则代码

childnode.Checked = parentNode.Checked;

通过MessageBox.Show(childnode.Checked +“”+ parentNode.Checked)显示;执行代码后显示“False True”,并且TreeView中的子复选框保持未选中状态。

我尝试过在网络上发现的几种变体,结果相同。我甚至尝试了替换TreeView(MWControls)的结果完全相同。

有趣的是,我设置的任何其他childnode属性(比如BackColor)都会生效。

我认为递归不是问题,似乎可以通过调试MessageBox来验证。

有什么想法吗?

此致 吉姆


这是一个winform应用程序。

我删除了所有没有更改的MessageBox调用;仍未检查子节点以响应正在检查的父节点。

我删除了我的AfterCheck例程,并使用了引用 verbatum 的例程,结果相同;未检查子节点以响应正在检查的父节点。

我已经玩了几个小时而没有运气。

奇怪的是,我改变的任何其他属性(如BackColor)都会生效。

我确实在网络上看到了一个模糊的引用,这是Win7中的一个问题,但我再也找不到了。无论如何,我使用的是Vista,.Net 3.5和C#Express 2008。

感谢您的投入。

此致 吉姆

1 个答案:

答案 0 :(得分:1)

This example做你需要的。很可能您的代码无法正常工作,因为设置子项的Checked属性会再次传播该事件,并且您不会像链接代码那样检查Unknown操作。

相关问题