在MFC中禁用/隐藏CListCtrl中的项目

3

我希望使用SetItemState()来隐藏或禁用某些项目。CListCtrl处于报表视图中。

大概像这样:m_List.SetItemState(1, DISABLE, DISABLE);

我搜索了一下,但没有找到正确的nState。

如果有比SetItemState更好的解决方案也可以。

有人能帮我吗?

2个回答

4

没有任何状态可以表示禁用(灰色)项目。请参阅文档。 解决这个问题的唯一方法是自己实现并使用自定义绘制。这是我解决它的方式。

当您捕获LVN_ITEMCHANGING时,您可以轻松地防止用户选择一个项目。只需过滤状态更改为LVIS_SELECTED并返回TRUE以防止更改即可。


0

您可以提供视觉反馈。我会派生一个类CMFCListCtrl并重写OnGetCellBkColorOnGetCellTextColor方法来实现它。

我还会重写其对选择的响应,以在选择不可选择的项目时取消选择。但是对于这部分,我不太确定是否可行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接