MFC 列表控件
在 MFC 中,我可以通过将“编辑标签”设置为 true 来编辑列表控件中项目的文本,但仅限于第一列。现在,当我单击第一个列项来更改其文本时,我可以更改其文本,但是当我按 Enter 时,其文本不会更新,为什么以及如何编辑其他列的文本?
In MFC, I can edit the text of items in the list control but only for the first column by setting the Edit Labels to true. Now when I click the first column item to change its text, I'm able to change its text but when I hit Enter, its text isn't updated, why and how do I edit text for other columns?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我们在列表控件的单元格位置上创建 CEdit 控件(当我们双击列表控件时)
当我们按下 Enter 键时,它会更新该值。
在此示例中,当我们 dbclick 列表控件时,我们仅修改 1 个子项(第二个)
您可以创建许多 CEdit 控件并对所有子项执行此操作。
列表控件 SingleSelection = true
希望对您有所帮助。
谢谢
We create CEdit control on the List control's cell's position (when we double click on List Control)
and when we press enter it updates the value.
In this example we modify only 1 subitem (the 2nd), when we dbclick on List Control
you can create many CEdit controls an do it with all the subitems.
List Control SingleSelection = true
I hope it will help you.
Thanks
遗憾的是,无法利用
LVS_EDITLABELS
和LVN_ENDLABELEDIT
编辑第一列以外的其他列。有关解决方法,请参阅 CodeProject 上的 XListCtrl 文章了解更多信息,它会动态创建需要时使用编辑控件。
Unfortunately it isn't possible to utilize
LVS_EDITLABELS
andLVN_ENDLABELEDIT
for editing other columns than the first.For a workaround see the XListCtrl article on CodeProject for further information, it dynamically creates an edit control when needed.
对于第一列:
在父类中添加编辑端的处理程序
对于其他列:我还没有尝试过,但应该不会太难,因为你可以在MFC源代码中查找它们是如何实现的做吧。
请注意,上面的代码是使用最新功能包中的 CMFCListCtrl 进行测试的,尽管我假设普通的 CListCtrl 的行为相同。
For the first column:
add a handler for the edit end in the parent class
For other columns: I haven't tried it yet, but it should not be too hard, as you can lookup in the MFC source code how they do it.
Note that the code above is tested with a CMFCListCtrl from the latest feature pack, though I assume a plain CListCtrl behaves the same.