我在一个对话框中有3个列表控件,但只有一个显示焦点。 如果我点击第二个列表控件然后从第一个焦点消失。 意味着一次只有一个列表显示焦点。 如何使焦点保留在同一对话框的所有列表控件上?
答案 0 :(得分:1)
我不认为这在技术上是可行的。 “焦点”是一个只能应用于单个元素的属性。
从“焦点”的角度来考虑它是用户当前正在与之交互的元素。如何期望用户同时与3个不同的元素进行交互?
答案 1 :(得分:0)
正如Brian所说 - 焦点只能在一个控件上。我猜你正在尝试根据第一个列表框更改其他列表控件。一种方法是将变量与每个列表控件相关联,如mListCtrl1,mListCtrl2。然后为NM_CLICK事件添加一个处理程序,并有一些代码如下:
void CTabTestDlg::OnNMClickList3(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = (LPNMITEMACTIVATE)(pNMHDR);
// TODO: Add your control notification handler code here
*pResult = 0;
UpdateData(true);
DWORD dwData = mListCtrl1.GetItemData(pNMItemActivate->iItem);
int max = mListCtrl2.GetItemCount();
for (int i=0;i<max;i++)
{
DWORD dwData2 = mListCtrl2.GetItemData(i);
if (dwData==dwData2)
{
mListCtrl2.SetItemState(i,LVIS_SELECTED,LVIS_SELECTED);
break;
}
}
UpdateData(false);
}
请注意,我将控件设置为“始终显示选择”和“单选”