MFC listCtrl实现部分编辑

本文介绍了如何在C++的CDlgDBCDeal类中处理ListCtrl的双击事件,使用edit控件实现选中项的编辑,并在失去焦点时保存用户输入并隐藏edit控件。
摘要由CSDN通过智能技术生成

如图所示:
双击listCtrl事件处理,利用edit控件实现编辑

void CDlgDBCDeal::OnNMDblclkListpart2(NMHDR* pNMHDR, LRESULT* pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	NMLISTVIEW* pNMListView = (NMLISTVIEW*)pNMHDR;

	CRect rc;
	m_Row = pNMListView->iItem;//获得选中的行
	m_Col = pNMListView->iSubItem;//获得选中列

	if (pNMListView->iSubItem != 0) //如果选择的是子项;
	{
		if (m_Col==3 || m_Col == 4)//部分列可编辑,避免手误修改其他展示项
		{
			m_listCtrlPart2.GetSubItemRect(m_Row, m_Col, LVIR_LABEL, rc);//获得子项的RECT;
			m_edit.SetParent(&m_listCtrlPart2);//转换坐标为列表框中的坐标
			m_edit.MoveWindow(rc);//移动Edit到RECT坐在的位置;
			m_edit.SetWindowText(m_listCtrlPart2.GetItemText(m_Row, m_Col));//将该子项中的值放在Edit控件中;
			m_edit.ShowWindow(SW_SHOW);//显示Edit控件;
			m_edit.SetFocus();//设置Edit焦点
			m_edit.ShowCaret();//显示光标
			m_edit.SetSel(-1);//将光标移动到最后
		}
	}

	*pResult = 0;
}

edit控件事件处理,listctrl保存

void CDlgDBCDeal::OnEnKillfocusEdittemp()
{
	// TODO: 在此添加控件通知处理程序代码
	CString tem;
	m_edit.GetWindowText(tem);    //得到用户输入的新的内容
	m_listCtrlPart2.SetItemText(m_Row, m_Col, tem);   //设置编辑框的新内容
	m_edit.ShowWindow(SW_HIDE);                //隐藏编辑框
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值