在CListCtrl中用函数GetItemText(iCurSel,icolum)获得刚编辑完毕的某个单元格的值。总是得不到正确的值?
我是在OnItemchanged()事件中用函数GetItemText(iCurSel,icolum)获得某个单元格的值的。
错误现象是这样的:编辑单元格后,鼠标换行点击,用GetItemText()不能得到上一次单元格的值。
(换行时得到是上上次的值,不是上次的值。)
我编辑单元格后无论换行还是不换行,都需要提交数据。这怎么实现啊?
请大家说说要实现这样的过程能不能用OnItemchanged()事件?怎么把刚编辑的值提交出去? 有什么思路。我解决这个问题有一天了,都急死了!
我是在OnItemchanged()事件中用函数GetItemText(iCurSel,icolum)获得某个单元格的值的。
错误现象是这样的:编辑单元格后,鼠标换行点击,用GetItemText()不能得到上一次单元格的值。
(换行时得到是上上次的值,不是上次的值。)
我编辑单元格后无论换行还是不换行,都需要提交数据。这怎么实现啊?
请大家说说要实现这样的过程能不能用OnItemchanged()事件?怎么把刚编辑的值提交出去? 有什么思路。我解决这个问题有一天了,都急死了!
void CStepPage::OnItemchangedOpList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here int iCurSel;
CurSel = m_pOperList.GetSelectionMark(); CString strTemp;
strTemp=_T(m_pOperList.GetItemText(iCurSel,3)); if(strTemp.GetLength() == 0)
{
m_dwTimer=0;
}
else
{
if(!isNumber(strTemp))
{
m_dwTimer=0;
}
m_dwTimer= atoi(strTemp);
} COperation *ptOper = (COperation*)(m_pOpArray->GetAt(iCurSel));
ASSERT(ptOper);
ptOper->m_dwTimeLength = m_dwTimer; *pResult = 0;
}
UINT uOldState = pNMListView->uOldState;
UINT uNewState = pNMListView->uNewState; if((uOldState & LVIS_SELECTED) && !(uNewState & LVIS_SELECTED))后可以在item deselected时保存一次。但最后修改的一次还是不能提交保存。 为什么????
回复人: jiangsheng(蒋晟.Net[MVP]) ( ) 信誉:285 2006-2-6 3:01:19 得分: 0
try LVIS_FOCUSED
void CxxxDialog::OnEndlabeleditListProbe(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
// 应用编辑结果
LV_ITEM* pItem = (LV_ITEM*)&pDispInfo->item;
m_ctrlProbeList.SetItemText(pItem->iItem,pItem->iSubItem,pItem->pszText);
*pResult = 1;
}
我不明白更改后为什么OnItemchanged事件要触发多次。 我现在想在单元格CListCellEdit的事件里提交数据算了。OnItemchanged怎么这么麻烦!!
大家在帮我看看
http://community.csdn.net/Expert/topic/4542/4542932.xml?temp=.9024927