【问题标题】:How to edit columns in-place with CListCtrl?如何使用 CListCtrl 就地编辑列?
【发布时间】:2008-10-31 15:32:24
【问题描述】:

我希望 CListCtrl.EditLabel() 用于列表的任何列。如何实现这样的功能?

【问题讨论】:

    标签: mfc clistctrl


    【解决方案1】:

    这是可行的,但它确实需要通过鼠标点击和焦点事件进行大量填充。

    简而言之,您捕获鼠标左键按下消息并将其转换为单元格点击详细信息(即行和列索引)。

    使用这些单元格详细信息,您无法确定列表视图单元格的大小和位置以及其中包含的文本值。

    现在使用上一步中的大小和位置详细信息直接在此单元格上创建一个 CEdit 控件,并为其提供单元格的文本值。

    最后一步是处理 CEdit 的焦点和键盘输入事件,以便可以将 CEdit 的文本详细信息放回列表视图单元格中。

    它确实需要大量的编码,但如果做得好,它确实可以很好地替代网格控件。

    【讨论】:

      【解决方案2】:

      不要尝试使用 CListCtrl。

      使用MFC Grid Control。我们成功地将其部署在现成的应用程序中。它为所有单元格提供就地编辑、复选框、旋转等,以及列和行标题、自动大小、自动扩展、颜色、拖放。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      相关资源
      最近更新 更多