是否可以使用 CListCtrl 编辑数据 - 如果没有,任何人都可以建议 MFC 中的替代控件吗?

Posted

技术标签:

【中文标题】是否可以使用 CListCtrl 编辑数据 - 如果没有,任何人都可以建议 MFC 中的替代控件吗?【英文标题】:Is it possible to edit data in place using CListCtrl - if not, can anyone suggest an alternative control in MFC? 【发布时间】:2010-03-08 10:50:08 【问题描述】:

我正在设计一个 MFC 应用程序,我希望在其中有一个带有 2 个列的网格:两者都是可编辑的,用户将在其中输入数据并且应用程序将收到有关它的通知。用户可以根据需要增加/减少行数 - 用于这种要求的理想 MFC 控件是什么?

这是我第一次设计 MFC 应用程序,所以不要介意这听起来太无聊:)

【问题讨论】:

【参考方案1】:

这不是一个愚蠢的问题。实际上你遇到了一个困扰每个 MFC 开发人员 15 年的问题:MFC 库没有内置的网格控件。我猜你正在寻找一种网格控制。据我所知,不可能在 CListCtrl 中编辑两列。只能编辑第一列“标签”。

对于网格控件,您必须寻找可以添加到您的项目中的合适的第三方工具,例如 ActiveX 控件。 (我记得旧的 Visual Studio 6 带有一个“MS FlexGrid”,您可以将它与组件库一起添加到项目中,但我从未使用过它,所以我不知道它是否是一个不错的选择。但是或许足以满足您的目的。)大多数第三方网格控件都需要许可费用,但这里有一个(相当强大的)免费网格(至少免费但没有许可):

http://www.codeproject.com/KB/miscctrl/gridctrl.aspx

(或谷歌“MFC Grid Control”或类似的东西。我认为会有更多的免费网格。)

【讨论】:

另一个免费的 MFC 网格控件:codeproject.com/KB/MFC/UltimateGrid.aspx 问题是,我正在开发一个在公司内部使用的内部工具——我认为人们不会对使用第三方代码的工具感到满意,因为它需要各种许可麻烦。除非是这样,否则它是绝对必要的——它不是,只是它会让应用程序的用户更直观。感谢您的回复 - 节省了我寻找 MSVC 8.0 中不存在的东西的时间!! 我的回答和亚当的评论中链接的网格的许可证非常慷慨(“代码项目开放许可证(CPOL)”:codeproject.com/info/cpol10.aspx)。实际上,我没有看到任何严重的限制,无论是在商业项目、内部项目还是开源项目中。甚至不需要告诉您的用户您正在使用这些第三方工具。我会把它和你的应用一起安装(作为你应用的一部分),就是这样。

以上是关于是否可以使用 CListCtrl 编辑数据 - 如果没有,任何人都可以建议 MFC 中的替代控件吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CListCtrl 就地编辑列?

如何通过点击“取消”键取消 CListCtrl 中的编辑?

在 CEdit 文本更改时选择 CListCtrl 中的项目

MFC CListCtrl 更新任何单元格的文本

如何处理 CListCtrl 中的属性键?

如果任何列中不需要图像/图标,MFC CListCtrl是否合适?