我想用SetItemState()隐藏或禁用Items。 CListCtrl位于报表视图中。
它必须是这样的m_List.SetItemState(1, DISABLE, DISABLE);
我搜索但没找到合适的nState
如果有另一个解决方案而不是SetItemState,它也可以
任何人都可以帮助我吗?
答案 0 :(得分:2)
没有项目状态来表示禁用(灰色)项目。见docs 解决这个问题的唯一方法是您自己的实现和使用自定义绘制。这就是我这样做的方式。
您可以轻松阻止用户在捕获LVN_ITEMCHANGING时选择项目。只需过滤状态Change to LVIS_SELECTED并返回TRUE以防止更改。
答案 1 :(得分:0)
您可以提供视觉反馈。我会派出一个类CMFCListCtrl
并覆盖OnGetCellBkColor
和OnGetCellTextColor
方法来实现它。
在选择不可选择的项目时,我会覆盖其对选择的响应以取消选择。但是对于这部分,我不太确定它是否可行。