日期:2014-05-19  浏览次数:21533 次

WinForm 带CheckBox的TreeView 双击CheckBox时的奇怪问题
一个WinForm的TreeView,某node的CheckBox初始状态为false,当双击这个node的checkbox时,会出现很奇怪的情况:
第一次双击checkbox,checkbox显示的状态会切换两次状态,unchecked-> checked-> unchecked,而AfterCheck事件仅触发一次,在AfterCheck事件中获取到的checkbox状态为checked。在这里checkbox状态已经和显示状态不一致了
以后每次双击,checkbox显示的状态会出现一次切换,AfterCheck也会触发一次,并且checkbox显示的状态和值的状态仍然保持相反。

除上面这个问题外,还有一点,当双击treeview   的checkbox后,如果再去单击或双击该界面中除这个treeview外的任何部分,系统会忽略第一次点击事件。举例来说,一个窗口中,有一个treeview,还有一个ok按钮,当我双击这个treeview的一个checkbox后,再去点那个ok按钮,第一次点击是没有任何作用的,第二次以及以后的点击才会有效,包括点击最大化,最小化,以及关闭这种系统按钮。

我的环境:.Net   framework   2.0   +   VS   2005   +   Vista,TreeView直接用系统的,没有自编代码的影响。

大家救命啊,这个问题太诡异了!

------解决方案--------------------
这种现象估计是.NET的问题,只要想想其它解决办法
比如放到NodeMouseDoubleClick事件中再处理一次
------解决方案--------------------
我也碰到过类似的问题。楼主可以用Click事件试试。Check事件在调试过程中有诡异的。
------解决方案--------------------
感觉微软提供的控件都是有那么一点不爽的地方