最近用到duilib库中的list 控件,现在实现的要求是单击list列表中的一项,然后触发itemclick事件,将被点击的这一栏内容写入临时变量内,为此需要获取被点击栏的序号,通过一些demo可以知道通过GetCurSel()去获得,但是这样就有一个bug,就是你的每次单击触发的事件获取的GetCurSel()都是上一次的序号,例如我有这样一个list表格
我第一次单击列表序号为0的行,那么我通过GetCurSel()获得的值是-1,这个-1是不存在的值,接着我点击列表序号是1的行,GetCurSel()的值为0
即每次GetCurSel()的值是上一次点击的行的序列,为什么呢,我找到源码,发现源码是先发消息再获取值,也就是说你响应单击事件的时候,值还没有被取到
下面我们在vs2010上修改源码
1,在工具栏找到查询功能,输入itemclick
2,点击左边的黄色文件夹图标按钮
3点击全部查找
这两个就是我们要的
双击进入这两个文件,将源代码改成如下
其实就是调换Select()函数跟SendNotify()函数的位置
如此便可以修改GetCurSel()的bug