一个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直接用系统的,没有自编代码的影响。大家救命啊,这个问题太诡异了!

解决方案 »

  1.   

    经测试,在Windows 2003(安装.net 2.0)下工作正常,在一个干净的Vista上(还没有安装.net 2.0,自带3.0)仍然存在问题。
      

  2.   

    这种现象估计是.NET的问题,只要想想其它解决办法
    比如放到NodeMouseDoubleClick事件中再处理一次
      

  3.   

    我也碰到过类似的问题。楼主可以用Click事件试试。Check事件在调试过程中有诡异的。
      

  4.   

    在NodeMouseDoubleClick中处理也不行,第一次点击不触发NodeMouseDoubleClick事件:(而且前面说的第二个问题,也不是NodeMouseDoubleClick可以解决的,M$能不能尽快出个解决方案啊:(