我在TreeView中加入如下树形结构:
'---------
部门1
    姓名1
    姓名2
部门2
    姓名3
部门3
    姓名4
部门4
    姓名5
'---------
当我“部门1”为展开状态时出现了一个奇怪的问题:
此时当我点击“部门2”的时候,“部门1”收缩,但是“部门2”没有展开,“部门3”却展开了。同样,当“部门1”为展开状态的时候,我点击“部门3”,展开的却是“部门4”。我看了一下,在响应的nodeclick事件里的Node的index值也不对,SelectItem的index值也不对。
但是在“部门1”为收缩状态的时候,展开都很正常;
当把“部门1”里面删除一个子项,即只有一个子项时,展开也很正常;晕了!

解决方案 »

  1.   

    你的那个展开的问题我倒是遇到过,最后没办法解决但是index值不对就没遇到过了
      

  2.   

    再CHECK一下吧,可能是什么地方没有写好
      

  3.   

    VirtualDesktop:这个展开的问题不就是因为响应的index值不对造成的么;
    guyehanxinlei:我check了很多遍,不过我以前也没有用过treeview,所以check不出来哈;
    救命啊!
      

  4.   

    挺奇怪的,你看看你的选中node的key
      

  5.   

    我选中的时候把key显示出来看了,不是我点的那个的key,是它展开的那个的key
      

  6.   

    晕了,我真是没见过Index值不对的
      

  7.   

    这种情况的确很怪,我没遇过,但我遇过ListBox中类似的现象,所以我猜可能是鼠标坐标错位的问题,你按住TreeView所在窗体的标题栏,拖移几下窗体的位置后再试试。窗体有没有用SubClass?
      

  8.   

    我打赌:90%是LZ的代码有问题!
    关键是LZ补贴出代码,没法确定。
      

  9.   

    我碰到过这问题,现象是点了某个节点,却展开了别的节点,而且在别的电脑上没问题,我怀疑是TREEVIEW的相关的OCX有问题,准备换下OCX试下,但 出问题的电脑在客户那边,还没机会试。
      

  10.   

    今天没有上来看了
    应该是控件本身在处理单击事件的时候出了问题,我把它属性里的“单项选择”前面的勾勾取消,然后自己在nodeclick里面写单击的处理就ok了。
    据我的分析,产生这样的原因是这个控件在处理单击的时候,先收缩当前打开的节点,然后再展开当前点击的节点,但是我测试的时候发现,当我鼠标按下的时候就收缩了打开的节点,这个时候我鼠标所对应的节点已经往下移动,当我鼠标放开的时候,它就打开了这个时候的鼠标对应位置的节点,所以就出现了这样的问题,在做这个控件的时候要么都在mousedown或者mouseup里面处理,要么先在mousedown里收缩节点但是记下此时鼠标对应的节点然后再在mouseup里面展开节点就没有这个问题了
    谢谢各位了
      

  11.   

    我的没有这种情况哦
    都单击时,都是鼠标弹起才执行的
    我用的是M$ Common Controls 6.0 (sp6)