当前位置:   article > 正文

MFC ListControl表格编辑()_mfc listcontrol 可编辑

mfc listcontrol 可编辑

首先在资源视图的主界面添加一个editcontrol编辑框控件

再添加主界面ListControl表格控件

类似这样:

再设置listcontrol表格控件的属性和editcontrol编辑框属性

在.h的头文件里面定义CListCtrl m_list;  CEdit m_edit;

  1. CListCtrl m_list;
  2. CEdit m_edit;

将表格控件listcontrol、编辑框editcontrol控件和控件ID关联起来

  1. DDX_Control(pDX, IDC_EDIT_LIST, m_edit);
  2. DDX_Control(pDX, IDC_LIST, m_list);
  1. //双击编辑表格
  2. void COptical_fiber_polishingDlg::OnDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
  3. {
  4. LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
  5. // TODO: 在此添加控件通知处理程序代码
  6. NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
  7. CRect rc;
  8. m_Row = pNMListView->iItem;//获得选中的行
  9. m_Col = pNMListView->iSubItem;//获得选中列
  10. if (pNMListView->iSubItem == 0 || pNMListView->iSubItem == 4) //如果选择的是子项;
  11. {
  12. }
  13. else
  14. {
  15. m_list.GetSubItemRect(m_Row, m_Col, LVIR_LABEL, rc);//获得子项的RECT;
  16. m_edit.SetParent(&m_list);//转换坐标为列表框中的坐标
  17. m_edit.MoveWindow(rc);//移动Edit到RECT坐在的位置;
  18. m_edit.SetWindowText(m_list.GetItemText(m_Row, m_Col));//将该子项中的值放在Edit控件中;
  19. m_edit.ShowWindow(SW_SHOW);//显示Edit控件;
  20. m_edit.SetFocus();//设置Edit焦点
  21. m_edit.ShowCaret();//显示光标
  22. m_edit.SetSel(-1);//将光标移动到最后
  23. }
  24. *pResult = 0;
  25. }
  26. void COptical_fiber_polishingDlg::OnKillfocusEditList()
  27. {
  28. // TODO: 在此添加控件通知处理程序代码
  29. CString str;
  30. m_edit.GetWindowText(str); //得到用户输入的新的内容
  31. m_list.SetItemText(m_Row, m_Col, str); //设置编辑框的新内容
  32. m_edit.ShowWindow(SW_HIDE); //应藏编辑框
  33. }
  34. //表添加行
  35. void COptical_fiber_polishingDlg::OnBnClickedAdd()
  36. {
  37. // TODO: 在此添加控件通知处理程序代码
  38. // TODO: 在此添加控件通知处理程序代码
  39. // 在列表视图控件中插入列表项,并设置列表子项文本
  40. int i = m_list.GetItemCount();
  41. if (i == 0) {
  42. m_list.InsertItem(0, L"1");
  43. m_list.SetItemText(0, 1, L"");
  44. m_list.SetItemText(0, 2, L"");
  45. m_list.SetItemText(0, 3, L"");
  46. }
  47. else
  48. {
  49. int i2 = i + 1;
  50. CString str;
  51. str.Format(L"%d", i2);
  52. m_list.InsertItem(i, (LPCTSTR)str);
  53. m_list.SetItemText(i, 1, L"");
  54. m_list.SetItemText(i, 2, L"");
  55. m_list.SetItemText(i, 3, L"");
  56. }
  57. }
  58. //表删除行
  59. void COptical_fiber_polishingDlg::OnBnClickedDelete()
  60. {
  61. // TODO: 在此添加控件通知处理程序代码
  62. int nItem = m_list.GetSelectionMark();
  63. if (nItem != -1)
  64. {
  65. int result = MessageBox(L"确认删除当前选中行的数据?", L"温馨提示",MB_YESNO | MB_ICONINFORMATION);//弹窗提示
  66. switch (result) {
  67. case IDYES:
  68. {//点击YES按钮的具体实现功能
  69. m_list.DeleteItem(nItem);
  70. break;
  71. }
  72. case IDNO:
  73. break;
  74. }
  75. }
  76. else {
  77. AfxMessageBox(L"请选择要删除的行!");
  78. }
  79. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/301779
推荐阅读
相关标签
  

闽ICP备14008679号