关于这点知识网上的资源其实非常多,这里给个讲的非常好的博客链接,希望你们少走点弯路

点击打开链接

环境VS2005

1、目标:实现在双击列表框时的动态修改,包括:

1)双击空白处时自动添加一行;

2)双击已有数据时使用显示编辑框实现动态修改子项。

2、重点内容:

1)List Control控件NM_DCLICK消息响应事件;

2)Edit Control的KillFocus消息响应;

3)Edit Control的动态显示及隐藏;

4)List Control获取指定行和列的编号,并获取指定行和列的内容及修改赋值。

示例

1、创建基于对话框的MFC应用程序,删除原有的静态文本;

2、添加一个List Control控件和一个Edit Control控件,并分别关联控制变量m_ListTem和m_EditTest(List Control控件适当调整大小,Edit Control大小不用调整);

3、初始化对话框函数OnInitDialog中实现List Control控件和Edit Control控件的初始化,代码如下:

[cpp] view plaincopy
  1. m_edit.ShowWindow(SW_HIDE);
  2. CRect rect;
  3. m_ListTest.GetClientRect(&rect);
  4. int iLength = rect.Width();
  5. m_ListTest.SetExtendedStyle(m_ListTest.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
  6. m_ListTest.InsertColumn(0, _T("编号"), LVCFMT_CENTER, 40);
  7. m_ListTest.InsertColumn(1, _T("频率(Hz)"), LVCFMT_CENTER, 80);
  8. m_ListTest.InsertColumn(2, _T("加速度(g)"), LVCFMT_CENTER, (iLength - 120)/3);
  9. m_ListTest.InsertColumn(3, _T("速度(m/s)"), LVCFMT_CENTER, (iLength - 120)/3);
  10. m_ListTest.InsertColumn(4, _T("位移(mm)"), LVCFMT_CENTER, (iLength - 120)/3);

4、对话框头文件中添加int型变量m_Row和m_Col,用于保存双击时选中的行和列号,并初始化为-1(未选中状态);

5、为List Control控件添加NM_DBLCLK消息响应,并添加代码如下:

[cpp] view plaincopy
  1. void CListControlDlg::OnNMDblclkListTest(NMHDR *pNMHDR, LRESULT *pResult)
  2. {
  3. LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
  4. // TODO: 在此添加控件通知处理程序代码
  5. CRect rc;
  6. CString strTemp;
  7. NM_LISTVIEW *pNMListView = (NM_LISTVIEW *)pNMHDR;
  8. m_Row = pNMListView->iItem;
  9. m_Col = pNMListView->iSubItem;
  10. if (pNMListView->iItem == -1)    //选择空白处,添加一行,并设置焦点为最后一行,第二列
  11. {
  12. m_Row = m_ListTest.GetItemCount();
  13. strTemp.Format(_T("%d"), m_Row + 1);
  14. m_ListTest.InsertItem(m_Row,strTemp);
  15. m_ListTest.SetItemState(m_Row, LVIS_SELECTED | LVIS_FOCUSED,LVIS_SELECTED | LVIS_FOCUSED);
  16. m_ListTest.EnsureVisible(m_Row, FALSE);
  17. //m_Col = 1;
  18. }
  19. if (m_Col != 0) // 选择子项
  20. {
  21. m_ListTest.GetSubItemRect(m_Row, m_Col, LVIR_LABEL, rc);
  22. m_edit.SetParent(&m_ListTest);
  23. m_edit.MoveWindow(rc);
  24. m_edit.SetWindowTextW(m_ListTest.GetItemText(m_Row, m_Col));
  25. m_edit.ShowWindow(SW_SHOW);
  26. m_edit.SetFocus();//设置Edit焦点
  27. m_edit.ShowCaret();//显示光标
  28. m_edit.SetSel(0, -1);//全选
  29. }
  30. *pResult = 0;
  31. }

6、为Edit Control控件添加EN_KILLFOCUS消息响应,并添加代码如下:

[cpp] view plaincopy
  1. void CListControlDlg::OnEnKillfocusEditInsert()
  2. {
  3. // TODO: 在此添加控件通知处理程序代码
  4. CString str;
  5. m_edit.GetWindowTextW(str);
  6. m_ListTest.SetItemText(m_Row, m_Col, str);
  7. m_edit.ShowWindow(SW_HIDE);
  8. }

这篇博客希望可以让刚入门的人少走点弯路

list control双击事件编辑列表框相关推荐

  1. GridView中列表的“双击事件”

    GridView中列表的"双击事件" 模拟事例: 双击列表中的行弹出该行的详细信息 解决方案: 为每一行添加一个双击事件 为列表所在的区域添加双击事件 为列表所在的区域添加Mous ...

  2. C#窗体控件-列表框控件ListBox

    列表框(ListBox)用来显示一组相关联的数据,用户可以从中选择一个或多个选项.ListBox中的数据既可以在设计时填充,也可以在程序运行填充.列表框(ListBox)中的每个元素称为"项 ...

  3. 【易语言组合框和列表框联动】

    添加组合框和列表框联动 右击组合框选择设置项目 列表框添加组合框得选中项 列表框1.加入项目 (组合框1.内容, ) 列表框双击删除内容 列表框1.删除项目 (列表框1.现行选中项) 组合框和组合框联 ...

  4. MFC列表框控件的动态编辑

    在我们进行mfc 编程时,我们需要用到列表框显示各层或各物体的参数设置,同时也希望能编辑其参数.我以前在网上查找,用了CComboListCtrl,这需要3个cpp 和 h 文件,用起来还不容易. 最 ...

  5. java文本框双击可编辑_JS实现双击内容变为可编辑状态

    在一些网站上我们经常看到交互性很强的功能.一些用户资料可以直接双击出现文本框,并在此输入新的资料即可修改,无需再按确定按钮等.. 我在网上查了很多资料,但都有一个小bug,就是当获取焦点后,光标的位置 ...

  6. IE下列表框不能给option绑定click事件的解决办法

    列表框代码 <select size="3" ><option>Option1</option><option>Option2< ...

  7. vue 编辑弹框,编辑页面,列表数据也会跟着变

    vue 编辑弹框,编辑页面,列表数据也会跟着变 editPoster(row) {// this.form = JSON.parse(JSON.stringify(row)) //避免引用传递,做一次 ...

  8. 博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理

    2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 在JList类中有addListSelectionListener()方法,可以检测用户是否对JList的选 ...

  9. java组合框的事件有哪些_博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理...

    博为峰小博老师: 在JList类中有addListSelectionListener()方法,可以检测用户是否对JList的选取有任何的改变.在ListSelectionListener接口中只定义一 ...

最新文章

  1. 提高SQL语句的性能
  2. Java学完后可以从事的工作岗位分享
  3. 微型计算机所组装的流程图是,计算机、微型计算机的组成及工作过程.ppt
  4. LeetCode算法总结-回溯法与深度优先搜索
  5. 如何仅凭 README 就名列 GitHub No.1 并收获上万 Star?
  6. Vue 系列二 之 猛龙行动之绝密代码
  7. java中遍历Map几种方法
  8. jquery 判断checkbox是否为空的三种方法
  9. 色差大调色难?实操讲解如何去除谷歌影像色差
  10. 高德城市编码json_sql_excel 三级联动json合集
  11. XCTF-攻防世界-密码学crypto-新手练习区-writeup
  12. 外媒的指责恰恰反映华为的通信设备足够安全、技术领先
  13. Linux下装Matlab2014
  14. ​手把手教你做个AR涂涂乐 ​
  15. 系统操作问题:无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动--亲测解决
  16. 七夕节微信表白墙小程序源码/基于Laravel的表白墙微信小程序源码
  17. 简单阅读golang的net/http包和Negroni的源码
  18. hive编程指南笔记
  19. freemarker生成word不显示图片
  20. abp发布后遇到405错误

热门文章

  1. 不完美的英雄也是英雄
  2. MyBatis缓存技术(一级缓存、二级缓存)
  3. oracle11gr2安装hard limit错误
  4. 数据产品经理=数据+产品经理?
  5. 专家心得:网路管理中的三个难题
  6. 在openEuler系统上安装mugen工具的使用指南
  7. python分支结构说课_Python程序设计 循环结构说课稿
  8. GEO数据挖掘全流程分析
  9. 毕业设计 房间人数计数系统(红外热释电) - 单片机 物联网 嵌入式
  10. python编译安装详解_linux 编译安装python3.6的教程详解