Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t在AfterCheck事件中设置TreeNode的Checked属性_C#_Treeview_Checked - Fatal编程技术网

C# Can';t在AfterCheck事件中设置TreeNode的Checked属性

C# Can';t在AfterCheck事件中设置TreeNode的Checked属性,c#,treeview,checked,C#,Treeview,Checked,我在Vista上的C#2008(.NET3.5)中有一个简单的树状视图(几个家长和每个孩子一级) 在AFterCheck例程中,我试图根据用鼠标单击父节点时的状态设置/取消设置子节点的Checked属性 使用MessageBox,我可以看到输入的事件例程和通过子节点的循环,如果选中了父节点,则可以看到代码 childnode.Checked = parentNode.Checked; 通过MessageBox.Show(childnode.Checked+“”+parentNode.Check

我在Vista上的C#2008(.NET3.5)中有一个简单的树状视图(几个家长和每个孩子一级)

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

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

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

我试过在网上找到的几种变体,结果都是一样的。我甚至尝试了一个替换的TreeView(MWControls),结果完全一样

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

我相信递归不是一个问题,它似乎是通过调试MessageBox验证的

有什么想法吗

问候,, 吉姆


这是一个winform应用程序

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

我删除了我的事后检查程序,使用了一个引用verbatum的程序,结果相同;未检查子节点以响应正在检查的父节点

我已经玩了几个小时,运气不好

奇怪的是,我更改的任何其他属性(如背景色)都会生效

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

谢谢你的意见

问候,,
吉姆做你需要的事。您的代码很可能无法工作,因为设置子级的Checked属性会再次传播事件,并且您没有像链接到代码那样检查
未知
操作。

您可以发布
AfterCheck
事件处理程序吗?永远不要使用MessageBox调试事件处理程序。它会产生一个消息循环,导致Windows事件无法按顺序传递。改为使用调试器断点或Debug.Print()。分配Checked属性会导致AfterCheck事件代码再次运行,请使用bool变量避免这种情况。这是wpf、winforms还是asp.net?