我正在尝试编写一个程序,在列表视图中选择并焦点特定项目。
为什么调用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);