【发布时间】:2013-11-22 22:26:52
【问题描述】:
我想用 SetItemState() 隐藏或禁用项目。 CListCtrl 在报告视图中。
一定是这样的m_List.SetItemState(1, DISABLE, DISABLE);
我搜索了但没有找到正确的 nState
如果有SetItemState以外的其他解决方案,也可以
谁能帮帮我?
【问题讨论】:
我想用 SetItemState() 隐藏或禁用项目。 CListCtrl 在报告视图中。
一定是这样的m_List.SetItemState(1, DISABLE, DISABLE);
我搜索了但没有找到正确的 nState
如果有SetItemState以外的其他解决方案,也可以
谁能帮帮我?
【问题讨论】:
没有项目状态来表示禁用(灰色)项目。见docs 解决此问题的唯一方法是您自己的实现并使用自定义绘制。我就是这样做的。
当您捕获LVN_ITEMCHANGING 时,您可以轻松地阻止用户选择一个项目。只需将状态 Change 过滤为 LVIS_SELECTED 并返回 TRUE 即可阻止更改。
【讨论】:
您可以提供视觉反馈。我会派生一个类CMFCListCtrl 并覆盖OnGetCellBkColor 和OnGetCellTextColor 方法来实现它。
,我会在选择未指定的项目时覆盖对选择以取消选择的响应。但是对于这部分,我不太确定它是否可行。
【讨论】: