现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

List Control可编辑item文本(只支持第一列)

2012-08-13 06:17 工业·编程 ⁄ 共 1240字 ⁄ 字号 暂无评论

一 属性设置

Edit Labels属性设置为True,可以就地编辑项文本,仅仅设置个属性是不够的。

View属性设置为Report或者是List

当View的属性为Report的时候只能编辑第一列

二 List Control的初始化

m_List_ctlDemo.InsertColumn(0, L"编号", LVCFMT_LEFT, 100);

m_List_ctlDemo.InsertColumn(1, L"水果", LVCFMT_LEFT, 100);

m_List_ctlDemo.InsertColumn(2, L"产地", LVCFMT_LEFT, 100);

m_List_ctlDemo.InsertItem(0,L"1");

m_List_ctlDemo.SetItemText(0,1,L"苹果");

m_List_ctlDemo.SetItemText(0,2,L"北方");

m_List_ctlDemo.InsertItem(1,L"2");

m_List_ctlDemo.SetItemText(1,1,L"橘子");

m_List_ctlDemo.SetItemText(1,2,L"南方");

三 添加控件事件NM_DBLCLK

双击发送NM_DBLCLK

void CListDemoDlg::OnNMDblclkListDemo(NMHDR *pNMHDR, LRESULT *pResult)

{

// TODO: 在此添加控件通知处理程序代码

POSITION pos = m_List_ctlDemo.GetFirstSelectedItemPosition();

int nIndex = m_List_ctlDemo.GetNextSelectedItem(pos);

if (nIndex>=0)

{

m_List_ctlDemo.SetFocus();

CEdit* pEdit = m_List_ctlDemo.EditLabel( nIndex );

}

*pResult = 0;

}

四 添加控件事件LVN_ENDLABELEDIT

在结束某项编辑字符时发送LVN_ENDLABELEDIT

void CListDemoDlg::OnLvnEndlabeleditListDemo(NMHDR *pNMHDR, LRESULT *pResult)

{

NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);

// TODO: 在此添加控件通知处理程序代码

CString strName = pDispInfo->item.pszText;

int nIndex = pDispInfo->item.iItem;

m_List_ctlDemo.SetFocus();

if((!strName.IsEmpty()) && nIndex>= 0)

{

m_List_ctlDemo.SetItemText( nIndex, 0, strName);

}

*pResult = 0;

}

以上程序在 VC++2005 Unicode字符集下调试通过

给我留言

留言无头像?