在CListCtrl中用函数GetItemText(iCurSel,icolum)获得刚编辑完毕的某个单元格的值。总是得不到正确的值?
    我是在OnItemchanged()事件中用函数GetItemText(iCurSel,icolum)获得某个单元格的值的。
错误现象是这样的:编辑单元格后,鼠标换行点击,用GetItemText()不能得到上一次单元格的值。
(换行时得到是上上次的值,不是上次的值。)
   我编辑单元格后无论换行还是不换行,都需要提交数据。这怎么实现啊?
请大家说说要实现这样的过程能不能用OnItemchanged()事件?怎么把刚编辑的值提交出去? 有什么思路。我解决这个问题有一天了,都急死了!

解决方案 »

  1.   

    应该先用GetNextItem( -1, LVNI_SELECTED );获得当前选中的单元格,然后再用该方法返回的值作为GetItemText()方法要求对应单元格的坐标。
      

  2.   

    我是楼主!简化后的代码如下:
    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;
    }
      

  3.   

    加了条件
      UINT uOldState = pNMListView->uOldState;
     UINT uNewState = pNMListView->uNewState; if((uOldState & LVIS_SELECTED) && !(uNewState & LVIS_SELECTED))后可以在item deselected时保存一次。但最后修改的一次还是不能提交保存。  为什么????
      

  4.   

    响应LVN_ENDLABELEDIT消息,再里面判断处理。
      

  5.   

    我晕,看错了。应该试试楼上的方法。
    回复人: jiangsheng(蒋晟.Net[MVP]) ( ) 信誉:285  2006-2-6 3:01:19  得分: 0  
       
    try LVIS_FOCUSED
      

  6.   

    我的示例代码:
    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;
    }
      

  7.   

    pItem->pszText就是新输入的内容
      

  8.   

    在 if( !(uOldState &  LVIS_FOCUSED) && (uNewState &  LVIS_FOCUSED))语句中仍然实现不了。如果没有这条语句的话,OnItemchanged事件有时会触发3次。
       我不明白更改后为什么OnItemchanged事件要触发多次。   我现在想在单元格CListCellEdit的事件里提交数据算了。OnItemchanged怎么这么麻烦!!
      

  9.   

    问题的原因弄清楚了。是因为控件叠加,值的变化还没有反映到CListCtrl上去。
    大家在帮我看看
    http://community.csdn.net/Expert/topic/4542/4542932.xml?temp=.9024927