读书人

ListCtrl 怎么选中行再点按键修改里

发布时间: 2012-10-18 13:46:55 作者: rapoo

ListCtrl 如何选中行,再点按键修改里面数据
现在想实现如下功能:有一个List Control 选中其中一行 然后在父窗口中点“修改”按钮 修改数据 各位大神如何实现这个功能,新手求助。

[解决办法]

C/C++ code
void CVerSectionDlg::OnNMClickListVsShow(NMHDR *pNMHDR, LRESULT *pResult){    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);        CPoint point(pNMItemActivate->ptAction);    UINT uFlags;    m_nItem = m_listResult.HitTest(point, &uFlags);    GetDlgItem(IDC_BUTTON_VS_DELETEPIPE)->EnableWindow(TRUE);    *pResult = 0;}
[解决办法]
在你的.h文件中定义一个成员变量
int m_ItemSelected;
按照1楼说所,相应ListCtrl控件的点击消息,然后
m_ItemSelected = -1;
POSITION pos = this->m_list.GetFirstSelectedItemPosition();
if (pos == NULL)
{
return ;
}
else
{
while (pos)
{
m_ItemSelected= this->m_list.GetNextSelectedItem(pos);
}
}
这样你就知道你点击的是那一条记录了

下一步就简单了啊
CString name = this->m_list.GetItemText(m_ItemSelected, 0 );
CString name1 = this->m_list.GetItemText(m_ItemSelected, 1 );
......



[解决办法]
m_list.SetItemState(nIdx, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);

设置指定行的状态,可以改成选中或者未选中
响应修改按钮的OnEditButton
获取选中行(可能选中多行)
POSITION ps;
while(ps = m_list.GetFirstSelectedItemPosition())
{
int nIdx = m_list.GetNextSelectedItem(ps);
m_list.SetItemText(nIdx, nSubItem, _T("你要修改的内容"));
}

我的这个ListCtrl样式是报表样式的,根据需要你自行修改下
[解决办法]
探讨

m_list.SetItemState(nIdx, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);

设置指定行的状态,可以改成选中或者未选中
响应修改按钮的OnEditButton
获取选中行(可能选中多行)
POSITION ps;
while(ps = m_list.GetFirstSelectedIt……

读书人网 >VC/MFC

热点推荐