我在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
姓名1
姓名2
部门2
姓名3
部门3
姓名4
部门4
姓名5
'---------
当我“部门1”为展开状态时出现了一个奇怪的问题:
此时当我点击“部门2”的时候,“部门1”收缩,但是“部门2”没有展开,“部门3”却展开了。同样,当“部门1”为展开状态的时候,我点击“部门3”,展开的却是“部门4”。我看了一下,在响应的nodeclick事件里的Node的index值也不对,SelectItem的index值也不对。
但是在“部门1”为收缩状态的时候,展开都很正常;
当把“部门1”里面删除一个子项,即只有一个子项时,展开也很正常;晕了!
guyehanxinlei:我check了很多遍,不过我以前也没有用过treeview,所以check不出来哈;
救命啊!
关键是LZ补贴出代码,没法确定。
应该是控件本身在处理单击事件的时候出了问题,我把它属性里的“单项选择”前面的勾勾取消,然后自己在nodeclick里面写单击的处理就ok了。
据我的分析,产生这样的原因是这个控件在处理单击的时候,先收缩当前打开的节点,然后再展开当前点击的节点,但是我测试的时候发现,当我鼠标按下的时候就收缩了打开的节点,这个时候我鼠标所对应的节点已经往下移动,当我鼠标放开的时候,它就打开了这个时候的鼠标对应位置的节点,所以就出现了这样的问题,在做这个控件的时候要么都在mousedown或者mouseup里面处理,要么先在mousedown里收缩节点但是记下此时鼠标对应的节点然后再在mouseup里面展开节点就没有这个问题了
谢谢各位了
都单击时,都是鼠标弹起才执行的
我用的是M$ Common Controls 6.0 (sp6)