欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > MFC 的 CListCtrl 控件,使用SetItemState 方法来设置选中某个 item,如何达到效果和鼠标点击一致

MFC 的 CListCtrl 控件,使用SetItemState 方法来设置选中某个 item,如何达到效果和鼠标点击一致

2025/2/8 0:52:58 来源:https://blog.csdn.net/wuchen1004/article/details/145478465  浏览:    关键词:MFC 的 CListCtrl 控件,使用SetItemState 方法来设置选中某个 item,如何达到效果和鼠标点击一致

1)查询到的方法如下:

// 假设你要选中第 2 行(索引从 0 开始)
int nItem = 1;  

// 取消所有其他选中项
m_ListCtrl.SetItemState(-1, 0, LVIS_SELECTED);

// 设置选中状态,并确保它具有焦点
m_ListCtrl.SetItemState(nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);

// 确保选中的项可见
m_ListCtrl.EnsureVisible(nItem, FALSE);

2)上面的示例代码,设置选中了某个 item,但是没有鼠标点击选中的那个蓝色背景,几经查询后,是需要下面的处理:

void SelectItem(CListCtrl& listCtrl, int nItem)
{
    if (nItem < 0 || nItem >= listCtrl.GetItemCount())
        return;

    // 取消所有其他选中项
    listCtrl.SetItemState(-1, 0, LVIS_SELECTED | LVIS_FOCUSED);

    // 选中目标项,并确保它获得焦点
    listCtrl.SetItemState(nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);

    // 设置焦点到 list control,以确保蓝色背景显示
    listCtrl.SetFocus();

    // 触发重绘,确保背景颜色立即更新
    listCtrl.RedrawItems(nItem, nItem);
    listCtrl.UpdateWindow();
}


重点

使用RedrawItems函数来触发重绘以立即显示选中背景

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com