我用的是report样式的list,目标是点击list中的一行之后相应编辑框能显示相关内容,但是每次多次点击list里面不同的行之后编辑框里不能正常显示数据了,每次点击后编辑框显示的都是上一次点击的内容.请问有人碰到过这样的问题吗>?怎么解决?这是list的函数void D_Candidate::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{

// TODO: 在此添加控件通知处理程序代码
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
int pos = CanList.GetSelectionMark();
Ename=( CanList.GetItemText(pos,1));
Esex=(CanList.GetItemText(pos,2));
Eintro=(CanList.GetItemText(pos,3));
UpdateData(false);

*pResult = 0;
}

解决方案 »

  1.   


    我觉得和update差不多吧,树形控件update一下
      

  2.   

    UINT i, uSelectedCount = m_myListCtrl.GetSelectedCount();
      int  nItem = -1;
      
      // Update all of the selected items.
      
      if (uSelectedCount > 0)
      {
         for (i=0; i < uSelectedCount; i++)
         {
            nItem = m_myListCtrl.GetNextItem(nItem, LVNI_SELECTED);
            ASSERT(nItem != -1);
            m_myListCtrl.Update(nItem); 
         }
      }
    用这个获取当前选择的行(多行选择 你可以以最后一行的数据来更新)...
      

  3.   

    是要用uSelectedCount来代替我原来定义的pos吗?
    试过但是这样的话就不能点一下列表就更新编辑框里的内容了
      

  4.   

    if(pNMListView->uNewState & LVIS_SELECTED)
    {
    afxDump<< pNMListView->iItem << "\n";
    }
      

  5.   

    你是编辑框里面的内容不能刷新显示了,那应该update编辑框啊.....
      

  6.   


    是吧m_myListCtrl.Update(nItem); 去掉  加上你自己要的代码
      

  7.   

    .h文件afx_msg void OnDblclkListData(NMHDR* pNMHDR, LRESULT* pResult);
    .cpp文件ON_NOTIFY(NM_DBLCLK, IDC_LIST_DATA_INTER, OnDblclkListData)void C***View::OnDblclkListData(NMHDR* pNMHDR, LRESULT* pResult)
    {
    POSITION pos = m_ctrlDataList.GetFirstSelectedItemPosition();
    int nItem = m_ctrlDataList.GetNextSelectedItem(pos);
    if (nItem != -1)
    {
    SEDCOM_DTI *ptsSEDComDTI = (SEDCOM_DTI*)(m_ctrlDataList.GetItemData(nItem)); CSEDComCmdDetails CmdDetail;
    CmdDetail.SetSEDComDTI(*ptsSEDComDTI);
    CmdDetail.DoModal();
    }
    }
      

  8.   

    void CListDlg::OnClickList1(NMHDR* pNMHDR,LRESULT* pResult)
    {
    CString str,Name
      

  9.   

    void CListDlg::OnClickList1(NMHDR* pNMHDR,LRESULT* pResult)
    {
    CString str,Name
      

  10.   

    void CListDlg::OnClickList1(NMHDR* pNMHDR,LRESULT* pResult)
    {
    CString str,Name;
    int pos = m_list.GetSelectionMark();
    Name=m_list.GetItemText(pos,0);
    GetDlgItem(IDC_EDIT1)->SetWindowText(Name);
    }
      

  11.   

    响应的消息不对,可以响应点击或选择消息,要区别是一次只许选中一个还是多个项目,每当改变选择时,需要清空存储获取内容的变量(CString或List)