我想listctrl(列表控件)直接在上边增加一行,然后直接在新行上面编辑数据,怎么处理,整一天也没解决问题,就是如何在列表控件上编辑数据。

解决方案 »

  1.   

    ListCtrl本身是不支持的,你可以在上面贴一个EditBox,输入完数据,就让它销毁掉就可以了
      

  2.   

    一般的做法是这样的:在窗口上添加一个CEdit,设置为隐藏当CListCtrl双击时,找到双击的项的CRect,把CEdit移动到这儿,值为被双击项的值,并显示CEdit当CEdit失去焦点或者在CEdit上按回车后,隐藏CEdit,并把它的值赋给CListCtrl刚才双击的项
      

  3.   

    还有一个方法,可能更灵活:
    当你单击或双击单元格,在该位置动态生成一个CEdit,大小和单元格相同,然后在该CEdit里输入数据,当该CEdit失去焦点时,将其值传给该单元格,并销毁该CEdit。
    效果和前面两位兄弟相同,但资源耗费会小些。
      

  4.   

    界面中放置一个隐藏的Edit控件。鼠标点击listctrl时,用SubItemHitTest函数获取点击的格所在的行列。然后获取这个单元格的矩形大小,将Edit控件MoveWindow到这个矩形位置,在效果上就好像对单元格可以编辑了。当edit控件输入完毕后,响应edit控件的killfocus消息,将edit控件中输入的内容填入该单元格中,再隐藏edit控件。这样就实现listctrl的可编辑效果了。