读书人

问个有关问题:小弟我怎么让listview不

发布时间: 2012-01-11 22:28:46 作者: rapoo

问个问题:我如何让listview不选中某一行?
比如:
我有多条记录,如果上一条记录没有校验通过是不允许到下一条记录的,当它切换的时候,我用什么事件来拦截,禁止切换到另一条记录?


我尝试用LVN_ITEMCHANGING事件来处理。但发现这个事件会被调用多次(4次),分别是源及目标的选中、焦点状态改变。现在的问题是,我应该在哪种状态下返回true,哪种状态下返回false?

[解决办法]
if(nmlv.uChanged & LVIF_STATE)
{
if(nmlv.uNewState==0)
{
//判断是否可切换
if(不可切换) return TRUE;
return 0L;
}
}
[解决办法]
void CXXXDlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(pNMListView-> uNewState ==3 && pNMListView-> uOldState == 0)// <--只有当Item移动时才进入
{
//....进行判断
}
*pResult = 0;
}

读书人网 >VC/MFC

热点推荐