如何将重点放在列表视图项目上



我正在尝试编写一个程序,在列表视图中选择并焦点特定项目。

为什么调用listView_setselectionmark(或发送LVM_Setselectionmark)不工作以将重点放在列表视图项目上?在调用ListView_Setselectermark之后,焦点保留在原处,而不是更改为新位置;当我按箭头键时,它会从先前专注的项目而不是我指定的项目移动。

这是我选择并集中项目的代码段:

ListView_SetItemState(this->m_hwndChild, index, LVNI_SELECTED, LVNI_SELECTED);
ListView_SetSelectionMark(this->m_hwndChild, index);
ListView_EnsureVisible(this->m_hwndChild, index, false);
SetFocus(this->m_hwndChild);

这是一个完整的要点。每次按CTRL-R时,它都会选择列表视图的随机项目。

选择标志与焦点无关。它仅表示哪个项目启动了多个选择。

您需要使用LVIS_FOCUSED项目状态:

ListView_SetItemState(this->m_hwndChild, index, LVNI_SELECTED | LVNI_FOCUSED, LVNI_SELECTED | LVNI_FOCUSED);
ListView_EnsureVisible(this->m_hwndChild, index, false);
SetFocus(this->m_hwndChild);

相关内容

  • 没有找到相关文章

最新更新