我用的是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;
}
{
// 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;
}
我觉得和update差不多吧,树形控件update一下
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);
}
}
用这个获取当前选择的行(多行选择 你可以以最后一行的数据来更新)...
试过但是这样的话就不能点一下列表就更新编辑框里的内容了
{
afxDump<< pNMListView->iItem << "\n";
}
是吧m_myListCtrl.Update(nItem); 去掉 加上你自己要的代码
.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();
}
}
{
CString str,Name
{
CString str,Name
{
CString str,Name;
int pos = m_list.GetSelectionMark();
Name=m_list.GetItemText(pos,0);
GetDlgItem(IDC_EDIT1)->SetWindowText(Name);
}