精华内容
下载资源
问答
  • 列表框list添加内容
    千次阅读
    2022-03-20 22:41:08

    Python list列表添加元素的3种方法

    实际开发中,经常需要对 Python 列表进行更新,包括向列表中添加元素、修改表中元素以及删除元素。本节先来学习如何向列表中添加元素。

    前一节告诉我们,使用+运算符可以将多个序列连接起来;列表是序列的一种,所以也可以使用+进行连接,这样就相当于在第一个列表的末尾添加了另一个列表。

    请看下面的演示:

    language = ["Python", "C++", "Java"]
    birthday = [1991, 1998, 1995]
    info = language + birthday
    print("language =", language)
    print("birthday =", birthday)
    print("info =", info)
    

    运行结果:

    language = ['Python', 'C++', 'Java']
    birthday = [1991, 1998, 1995]
    info = ['Python', 'C++', 'Java', 1991, 1998, 1995]
    

    从运行结果可以发现,使用+会生成一个新的列表,原有的列表不会被改变。

    +更多的是用来拼接列表,而且执行效率并不高,如果想在列表中插入元素,应该使用下面几个专门的方法。

    Python append()方法添加元素

    append() 方法用于在列表的末尾追加元素,该方法的语法格式如下:

    listname.append(obj)
    

    其中,listname 表示要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等。

    请看下面的演示:

    l = ['Python', 'C++', 'Java']
    #追加元素
    l.append('PHP')
    print(l)
    #追加元组,整个元组被当成一个元素
    t = ('JavaScript', 'C#', 'Go')
    l.append(t)
    print(l)
    #追加列表,整个列表也被当成一个元素
    l.append(['Ruby', 'SQL'])
    print(l)
    

    运行结果为:

    ['Python', 'C++', 'Java', 'PHP']
    ['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go')]
    ['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go'), ['Ruby', 'SQL']]
    

    可以看到,当给 append() 方法传递列表或者元组时,此方法会将它们视为一个整体,作为一个元素添加到列表中,从而形成包含列表和元组的新列表。

    Python extend()方法添加元素

    extend() 和 append() 的不同之处在于:extend() 不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中。

    extend() 方法的语法格式如下:

    listname.extend(obj)
    

    其中,listname 指的是要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等,但不能是单个的数字。

    请看下面的演示:

    l = ['Python', 'C++', 'Java']
    #追加元素
    l.extend('C')
    print(l)
    #追加元组,元祖被拆分成多个元素
    t = ('JavaScript', 'C#', 'Go')
    l.extend(t)
    print(l)
    #追加列表,列表也被拆分成多个元素
    l.extend(['Ruby', 'SQL'])
    print(l)
    

    运行结果:

    ['Python', 'C++', 'Java', 'C']
    ['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go']
    ['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go', 'Ruby', 'SQL']
    

    Python insert()方法插入元素

    append() 和 extend() 方法只能在列表末尾插入元素,如果希望在列表中间某个位置插入元素,那么可以使用 insert() 方法。

    insert() 的语法格式如下:

    listname.insert(index , obj)
    

    其中,index 表示指定位置的索引值。insert() 会将 obj 插入到 listname 列表第 index 个元素的位置。

    当插入列表或者元祖时,insert() 也会将它们视为一个整体,作为一个元素插入到列表中,这一点和 append() 是一样的。

    请看下面的演示代码:

    l = ['Python', 'C++', 'Java']
    #插入元素
    l.insert(1, 'C')
    print(l)
    #插入元组,整个元祖被当成一个元素
    t = ('C#', 'Go')
    l.insert(2, t)
    print(l)
    #插入列表,整个列表被当成一个元素
    l.insert(3, ['Ruby', 'SQL'])
    print(l)
    #插入字符串,整个字符串被当成一个元素
    l.insert(0, "i like python")
    print(l)
    

    输出结果为:

    ['Python', 'C', 'C++', 'Java']
    ['Python', 'C', ('C#', 'Go'), 'C++', 'Java']
    ['Python', 'C', ('C#', 'Go'), ['Ruby', 'SQL'], 'C++', 'Java']
    ['i like python', 'Python', 'C', ('C#', 'Go'), ['Ruby', 'SQL'], 'C++', 'Java']
    

    提示,insert() 主要用来在列表的中间位置插入元素,如果你仅仅希望在列表的末尾追加元素,那我更建议使用 append() 和 extend()。

    更多相关内容
  • VC6.0 MFC 列表框 列表控件 添加 修改 删除

    千次阅读 多人点赞 2020-06-28 15:46:24
    VC6.0 MFC 列表框 列表控件 添加 修改 删除 写在前面:列表框是很常用,并且很重要的一个控件,那么接下来,就跟随我的脚步,去探索它的奥秘吧! 一、未卜先知 1、编译运行后,点击“学生档案信息”,界面如下图所示...

    VC6.0 MFC 列表框 列表控件 添加 修改 删除

    写在前面:列表框是很常用,并且很重要的一个控件,那么接下来,就跟随我的脚步,去探索它的奥秘吧!

    一、未卜先知

    1、编译运行后,点击“学生档案信息”,界面如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    2、添加记录,如下图所示。
    在这里插入图片描述
    3、修改记录,如下图所示。
    在这里插入图片描述
    4、删除记录,如下图所示。
    在这里插入图片描述
    二、实现步骤

    1、新建一个工程,如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    2、建立菜单,并给菜单做一个消息响应函数,如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    3、接下来在对话框中进行相应操作,具体步骤如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4、建立类向导,取类名“CDlgStuInfo”,如下图所示。
    在这里插入图片描述
    5、接下来,我们通过编程添加一些数据。首先在CdlgStuInfo中右击添加消息响应句柄,如下图所示。
    在这里插入图片描述
    6、在OnInitDialog() 中添加代码,如下。

    BOOL CDlgStuInfo::OnInitDialog() 
    {
    	CDialog::OnInitDialog();
    	// TODO: Add extra initialization here
    	DWORD dwStyle;
    	dwStyle = m_listCtrl.GetExtendedStyle();
    	dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES  | LVS_EX_ONECLICKACTIVATE;
    	m_listCtrl.SetExtendedStyle(dwStyle);
    	return TRUE;  // return TRUE unless you set the focus to a control
    	       // EXCEPTION: OCX Property Pages should return FALSE
    }
    

    记得要把头文件:#include "DlgStuInfo.h"对话框类嵌入进去!

    7、在OnMStuInfo()中添加代码,如下。

    void CChapterView::OnMStuInfo() 
    {
    	// TODO: Add your command handler code here
    	CDlgStuInfo dlg_stuInfo;
    	dlg_stuInfo.DoModal();
    }
    

    8、此时,运行结果如下图所示。
    在这里插入图片描述
    9、在第6步的基础上,继续往OnInitDialog() 中添加代码,如下。

    BOOL CDlgStuInfo::OnInitDialog() 
    {
    	CDialog::OnInitDialog();
    	// TODO: Add extra initialization here
    	DWORD dwStyle;
    	dwStyle = m_listCtrl.GetExtendedStyle();
    	dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES  | LVS_EX_ONECLICKACTIVATE;
    	m_listCtrl.SetExtendedStyle(dwStyle); //设置显示风格
    	m_listCtrl.InsertColumn(0,"学号",LVCFMT_CENTER,100); //第一个参数是字段的编号
    	m_listCtrl.InsertColumn(1,"姓名",LVCFMT_CENTER,100); //第二个参数是字段的名字
    	m_listCtrl.InsertColumn(2,"性别",LVCFMT_CENTER,100); //第三个参数是字段的显示风格
    	m_listCtrl.InsertColumn(3,"专业",LVCFMT_CENTER,100); //第四个参数是字段的宽度
    	m_listCtrl.InsertColumn(4,"班级",LVCFMT_CENTER,100); //设置表格字段名
    	m_listCtrl.InsertItem(0,"0001"); //0即表格中的第一行
    	m_listCtrl.SetItemText(0,1,"张三");
    	m_listCtrl.SetItemText(0,2,"男");
    	m_listCtrl.SetItemText(0,3,"电子信息");
    	m_listCtrl.SetItemText(0,4,"202001"); //在表格中添加数据,插入一行记录
    	m_listCtrl.InsertItem(1,"0002");
    	m_listCtrl.SetItemText(1,1,"李丽");
    	m_listCtrl.SetItemText(1,2,"女");
    	m_listCtrl.SetItemText(1,3,"计算机");
    	m_listCtrl.SetItemText(1,4,"202002");
    	return TRUE;  // return TRUE unless you set the focus to a control
    	        // EXCEPTION: OCX Property Pages should return FALSE
    }
    

    10、新建一个对话框,具体如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    11、紧接着建立它所对应的类,如下图所示。
    在这里插入图片描述
    12、双击“添加记录”按钮,把“添加一条学生记录信息”这个对话框给调出来,如下图所示。
    在这里插入图片描述
    13、把“添加一条学生记录信息”对话框的头文件:#include "Dlg_StuInfoAppe.h"嵌入进来。然后在OnBTNAppe()中编程。

    void CDlgStuInfo::OnBTNAppe() 
    {
    	// TODO: Add your control notification handler code here
    	CDlg_StuInfoAppe dlg_stuInfoAppe;
    	dlg_stuInfoAppe.DoModal();
    }
    

    14、接下来怎么把一条新的学生信息通过“添加一条学生记录信息”对话框加到上一个 “学生档案信息”对话框的列表中去,这是我们的目的。

    15、在对应部分添加如下代码:
    CString m_sNo,m_sName,m_sSex,m_sDept,m_sClass;
    在这里插入图片描述

    class CDlgStuInfo : public CDialog
    {
    // Construction
    public:
    	CDlgStuInfo(CWnd* pParent = NULL);   // standard constructor
    
    // Dialog Data
    	//{{AFX_DATA(CDlgStuInfo)
    	enum { IDD = IDD_DlgStuInfo };
    	CListCtrl	m_listCtrl;
    	//}}AFX_DATA
    
    	CString m_sNo,m_sName,m_sSex,m_sDept,m_sClass;
    
    	int m_listSelPos; //获取当前被选中的位置
    
    // Overrides
    	// ClassWizard generated virtual function overrides
    	//{{AFX_VIRTUAL(CDlgStuInfo)
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    	//}}AFX_VIRTUAL
    
    // Implementation
    protected:
    
    	// Generated message map functions
    	//{{AFX_MSG(CDlgStuInfo)
    	virtual BOOL OnInitDialog();
    	afx_msg void OnBTNAppe();
    	afx_msg void OnBTNModi();
    	afx_msg void OnClickList1(NMHDR* pNMHDR, LRESULT* pResult);
    	afx_msg void OnBTNDele();
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    };
    

    16、点击“确定”按钮后接收添加的信息到上一个 (学生档案信息)对话框的列表中去,代码如下。

    void CDlgStuInfo::OnBTNAppe() 
    {
    	// TODO: Add your control notification handler code here
    	CDlg_StuInfoAppe dlg_stuInfoAppe;
    	if(IDOK == dlg_stuInfoAppe.DoModal())
    	{
    		m_sNo = dlg_stuInfoAppe.m_sNo;
    		m_sName = dlg_stuInfoAppe.m_sName;
    		m_sSex = dlg_stuInfoAppe.m_sSex;
    		m_sDept = dlg_stuInfoAppe.m_sDept;
    		m_sClass = dlg_stuInfoAppe.m_sClass; //把添加记录对话框中的数据传过来,保存到基础信息对话框中
    		int pos; //添加的位置
    		pos = m_listCtrl.GetItemCount();
    		m_listCtrl.InsertItem(pos,m_sNo);
    		m_listCtrl.SetItemText(pos,1,m_sName);
    		m_listCtrl.SetItemText(pos,2,m_sSex);
    		m_listCtrl.SetItemText(pos,3,m_sDept);
    		m_listCtrl.SetItemText(pos,4,m_sClass); //把获取进来的数据插进去
    	}
    }
    

    17、双击“修改记录”按钮,把“修改记录信息”这个对话框给调出来(同12)。

    18、把“修改记录信息”对话框的头文件:#include "Dlg_StuInfoModi.h"嵌入进来。然后在OnBTNModi()中编程(同13)。

    void CDlgStuInfo::OnBTNModi() 
    {
    	// TODO: Add your control notification handler code here
    	CDlg_StuInfoModi dlg_stuInfoModi;
        dlg_stuInfoModi.DoModal();
    }
    

    19、接下来怎么把 “修改记录信息”对话框中要修改的记录更新到上一个 “学生档案信息”对话框的列表中去,这是我们的目的(同14)。

    20、我们回到IDD_DlgStuInfo对话框,选中对话框,右击选择“事件…”,在弹出的事件句柄中选择“NM_CLICK”,如下图所示。
    在这里插入图片描述
    在这里插入图片描述

    void CDlgStuInfo::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	// TODO: Add your control notification handler code here
    	m_listSelPos = m_listCtrl.GetSelectionMark();
    //获取当前被选行的信息,传送到编辑对话框中去
    	*pResult = 0;
    }
    

    21、添加代码如下(类似16)。

    void CDlgStuInfo::OnBTNModi() 
    {
    	// TODO: Add your control notification handler code here
    	CDlg_StuInfoModi dlg_stuInfoModi;
    	dlg_stuInfoModi.m_sNo = m_listCtrl.GetItemText(m_listSelPos,0); //获取当前记录的显示的文本
    	dlg_stuInfoModi.m_sName = m_listCtrl.GetItemText(m_listSelPos,1);
    	dlg_stuInfoModi.m_sSex = m_listCtrl.GetItemText(m_listSelPos,2);
    	dlg_stuInfoModi.m_sDept = m_listCtrl.GetItemText(m_listSelPos,3);
    	dlg_stuInfoModi.m_sClass = m_listCtrl.GetItemText(m_listSelPos,4);
    
    	if(IDOK == dlg_stuInfoModi.DoModal())
    	{ //把新数据传送给浏览对话框,实现信息的修改
    		UpdateData(true); //把对话框中的信息更新到内存中去
    		m_listCtrl.SetItemText(m_listSelPos,0,dlg_stuInfoModi.m_sNo);
    		m_listCtrl.SetItemText(m_listSelPos,1,dlg_stuInfoModi.m_sName);
    		m_listCtrl.SetItemText(m_listSelPos,2,dlg_stuInfoModi.m_sSex);
    		m_listCtrl.SetItemText(m_listSelPos,3,dlg_stuInfoModi.m_sDept);
    		m_listCtrl.SetItemText(m_listSelPos,4,dlg_stuInfoModi.m_sClass);
    	}
    }
    

    22、“删除记录”类似,不再叙述。这里仅将该部分代码附上,如下。

    void CDlgStuInfo::OnBTNDele() 
    {
    	// TODO: Add your control notification handler code here
    	CString str;
    	str.Format("确认删除第 %d 行",m_listSelPos + 1);
    	if(IDYES == AfxMessageBox(str,MB_YESNO|MB_ICONQUESTION))
    	{
    		m_listCtrl.DeleteItem(m_listSelPos);
    	}
    } 
    

    三、执行结果

    1、编译运行后,点击“学生档案信息”,界面如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    2、添加记录,如下图所示。
    在这里插入图片描述
    3、修改记录,如下图所示。
    在这里插入图片描述
    4、删除记录,如下图所示。
    在这里插入图片描述

    展开全文
  • CListCtrl 添加编辑框,下拉列表框,时间控件 CListCtrl 添加编辑框,下拉列表框,时间控件
  • 本节视频通过三种方法实现了防止项目重复加入列表框。 易语言列表框防止项目重复加入列表框视频教程源码: .版本 2 .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 列表框1.现行选中项 = 0 ...

    本节视频通过三种方法实现了防止项目重复加入列表框。

    易语言列表框防止项目重复加入列表框视频教程源码:

    .版本 2
    
    .程序集 窗口程序集_启动窗口
    
    .子程序 __启动窗口_创建完毕
    
    列表框1.现行选中项 = 0
    皮肤_加载 (1)
    
    .子程序 _按钮1_被单击
    
    列表框1.加入项目 (编辑框1.内容, )
    编辑框1.内容 = “”
    
    .子程序 _按钮2_被单击, , , 不重复加入-1
    
    .如果 (列表框1.选择 (编辑框1.内容) = -1)
    列表框1.加入项目 (编辑框1.内容, )
    信息框 (“添加成功!”, 0, , )
    .否则
    信息框 (“已经存在【” + 编辑框1.内容 + “】请不要重复添加该内容!”, 0, , )
    
    .如果结束
    
    .子程序 _按钮3_被单击, , , 不重复加入-2
    
    .如果 (SendMessageA (列表框1.取窗口句柄 (), 399, 0, 编辑框1.内容) = -1)
    列表框1.加入项目 (编辑框1.内容, )
    信息框 (“添加成功!”, 0, , )
    .否则
    信息框 (“已经存在【” + 编辑框1.内容 + “】请不要重复添加该内容!”, 0, , )
    
    .如果结束
    
    .子程序 _按钮4_被单击, , , 不重复加入-3
    .局部变量 i, 整数型
    .局部变量 重复, 逻辑型
    
    .计次循环首 (列表框1.取项目数 (), i)
    .如果真 (列表框1.取项目文本 (i - 1) = 编辑框1.内容)
    重复 = 真
    跳出循环 ()
    .如果真结束
    重复 = 假
    .计次循环尾 ()
    
    .如果 (重复 = 假)
    列表框1.加入项目 (编辑框1.内容, )
    编辑框1.内容 = “”
    信息框 (“添加成功!”, 0, , )
    .否则
    信息框 (“已经存在【” + 编辑框1.内容 + “】请不要重复添加该内容!”, 16, , )
    .如果结束

    源码:511遇见易语言教程

               511遇见易语言教程视频链接

               易语言列表框防止项目重复加入列表框

    展开全文
  • MFC列表框控件的动态编辑

    千次阅读 2019-09-10 13:14:41
    在我们进行mfc 编程时,我们需要用到列表框显示各层或各物体的参数设置,同时也希望能编辑其参数。我以前在网上查找,用了CComboListCtrl,这需要3个cpp 和 h 文件,用起来还不容易。 最近看到一个文章...

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

    最近看到一个文章 https://blog.csdn.net/qingyang8513/article/details/50986455 ,这个直接用 listctrl 和 一个Edit 控件,很简单。所以我也测试一下,并记录在此。

    运行效果如下,点击一处列表框里内容即可编辑,但我剪辑图时剪辑不到编辑状态。

    我的运行环境是vc2010,下面开始讲解过程:

    重点内容:

          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控件的初始化,    InitList();    UpdateList();

    代码如下:

    BOOL CListCtrlTestDlg::OnInitDialog()
    {
    	CDialogEx::OnInitDialog();
    
    	// Set the icon for this dialog.  The framework does this automatically
    	//  when the application's main window is not a dialog
    	SetIcon(m_hIcon, TRUE);			// Set big icon
    	SetIcon(m_hIcon, FALSE);		// Set small icon
    
    	// TODO: Add extra initialization here
    	InitList();
    	UpdateList();
    
    	return TRUE;  // return TRUE  unless you set the focus to a control
    }
    
    void CListCtrlTestDlg::InitList(void)
    {
    	Clayer layer={"zhang",1.3,15.6,88};
    	m_layer.push_back(layer);
    	Clayer  layer1={"Li",22.3,25.6,288};
    	m_layer.push_back(layer1);
    	Clayer layer2={"Wang",32.33,35.6,388};
    	m_layer.push_back(layer2);
    
    	m_EditTest.ShowWindow(SW_HIDE);
    	CRect rect;
    	m_ListTem.GetClientRect(&rect);
    	int iLength = rect.Width();
    	m_ListTem.SetExtendedStyle(m_ListTem.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
    	m_ListTem.InsertColumn(0, _T("编号"), LVCFMT_CENTER, 40);
    	m_ListTem.InsertColumn(1, _T("名字"), LVCFMT_CENTER, 80);
    	m_ListTem.InsertColumn(2, _T("x"), LVCFMT_CENTER, (iLength - 120)/3);
    	m_ListTem.InsertColumn(3, _T("y"), LVCFMT_CENTER, (iLength - 120)/3);
    	m_ListTem.InsertColumn(4, _T("旋转角度"), LVCFMT_CENTER, (iLength - 120)/3);
    
    
    }
    
    void CListCtrlTestDlg::UpdateList(void)
    {
    
    	CString index,x,y,z,name,count,rotate,blocks;
    	while(m_ListTem.GetItemCount()>0)
    		m_ListTem.DeleteItem(0);
    	for(int i=0;i<m_layer.size();i++)
    	{
    	
    		index.Format("%d",i);
    		Clayer& layer=m_layer[i];
    		name=layer.name;
    		x.Format("%.2f",layer.x);
    		y.Format("%.2f",layer.y);
    		count.Format("%d",layer.count);
    
    
    		m_ListTem.InsertItem(i,index);
    
    		m_ListTem.SetItemText(i,1,name);
    		m_ListTem.SetItemText(i,2,x);
    		m_ListTem.SetItemText(i,3,y);
    		m_ListTem.SetItemText(i,4,count);
    	}
    }

    在h 文件中定义层参数结构,并定义层参数向量m_layer.

    typedef struct {CString name;float x;float y;int count;} Clayer;

    std::vector<Clayer> m_layer;

    有上面,上面代码才不报错。这里完成了初始显示,应该可以得到开头的效果,但不能编辑。

    动态编辑的核心

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

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

    void CListCtrlTestDlg::OnDblclkList2(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    	// TODO: Add your control notification handler code here
    		CRect rc;
    	CString strTemp;
    	NM_LISTVIEW *pNMListView = (NM_LISTVIEW *)pNMHDR;
    	m_Row = pNMListView->iItem;
    	m_Col = pNMListView->iSubItem;
     
    	if (pNMListView->iItem == -1)	//选择空白处
    		return;
     
    	if (m_Col != 0)	// 选择子项
    	{
    		m_ListTem.GetSubItemRect(m_Row, m_Col, LVIR_LABEL, rc);
    		m_EditTest.SetParent(&m_ListTem);
    		m_EditTest.MoveWindow(rc);
    		m_EditTest.SetWindowText(m_ListTem.GetItemText(m_Row, m_Col));
    		m_EditTest.ShowWindow(SW_SHOW);
    		m_EditTest.SetFocus();//设置Edit焦点
    		m_EditTest.ShowCaret();//显示光标
    		m_EditTest.SetSel(0, -1);//全选
    	}
    
    	*pResult = 0;
    }
    

     

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

    void CListCtrlTestDlg::OnKillfocusEdit1()
    {
    	// TODO: Add your control notification handler code here
    	CString str;
    	m_EditTest.GetWindowText(str);
    	m_ListTem.SetItemText(m_Row, m_Col, str);
        //这里其实应该保存编辑结果,简化了,实际程序要有改变参数
    	m_EditTest.ShowWindow(SW_HIDE);
    }

    现在可以编译运行并测试程序了,应该就是我们开头的结果。

    改进

    输入完数据后,一般希望回车,就生效,可实际情况是要离开才生效,有点操作不方便。

    编辑框怎么相应回车呢?

    类精灵CListCtrlTestDlg里转到 Virtual function,点击添加 PreTranslateMessage

    编辑PreTranslateMessage函数如下:

    BOOL CListCtrlTestDlg::PreTranslateMessage(MSG* pMsg)
    {
    	 if (WM_KEYDOWN ==pMsg->message && VK_RETURN == pMsg->wParam)
    	 {
    		 if (m_EditTest.IsWindowVisible())
    		{
    			m_EditTest.ShowWindow(SW_HIDE);
    			return TRUE;
    		}
    	 }
    	return CDialogEx::PreTranslateMessage(pMsg);
    }
    

    这段代码的含义是:在按下回车键时, 如果编辑框是可见的,就让编辑框不显示。编辑框不显示就触发EN_KILLFOCUS消息。达到回车就保存的目的。

     

     

    展开全文
  • VB中关于LIST列表框的使用

    千次阅读 2019-01-29 14:35:42
    1.点击鼠标的左键,添加项目。点击鼠标的右键删除项目
  • 给组合框或列表框添加元素一、RowSource属性添加元素二、为工作表中的ActiveX控件中的列表框添加元素三、使用list属性添加元素四、使用additem方法添加列表项五、列表框的其他属性 一、RowSource属性添加元素 ...
  • 显示一个设备列表,可以添加删除设备,修改设备信息。 双击设备时显示设备信息。
  • uniapp IndexedList索引列表添加搜索

    千次阅读 2020-12-10 17:26:00
    最近做uniapp项目时,用到了IndexedList索引列表这个组件,但是需要添加一个搜索功能,于是呢我就尝试着在组件上面自己改一下。下面我就简单介绍一下: 所需组件 其实也就是两个,首先是indexedLIst索引组件,其次...
  • ListCtrl列表控件中添加edit和combo

    热门讨论 2012-10-16 21:51:19
    listctrl中添加edit控件和combo box控件 vc6编译通过,封装成类便于复用
  • void Ckongjian22Dlg::OnBnClickedOk() { CString text; //得到文本框对像 CEdit * edit=(CEdit*)GetDlgItem(IDC_EDIT1); edit->GetWindowText(text);... //将文本框添加列表框中 CList...
  • 组合框和列表框都可以在界面上同时显示多项内容,并且允许用户选中其中的某项内容列表框还允许同时选择多项。这两种控件的使用,有很多相似之处;2.3.1 技术要点: Windows 中预先定义了一系列“CB_ ”开头的消息...
  • mfc 列表框行颜色设置方法

    千次阅读 2019-09-11 14:04:15
    指定改变CListCtrl中某一行的颜色,比如说刚添加进去的一行,让它改变颜色,这样记录多了,容易看到自己刚刚加入的行,方便操作可查看,也可以让添加和...新建一个mfc 对话框工程,并添加列表框控件,添加一些数据...
  • 使用Vue实现下拉列表框批量添加选项,设置被选中的值。 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>学习Vue</title> <!-- 使用CDN...
  • MFC实现的多选的列表框ListBox

    热门讨论 2011-10-20 23:05:00
    左边的“待选的历史人物”列表框包含历史人物的名字,当选中人名并单击“添加”按钮,则名字会被添加到右边的“你喜欢的历史人物”列表框,同时从左侧的列表框中删除;当选中“你喜欢的历史人物”列表框中的人名并...
  • C# ListBox:列表框控件

    千次阅读 2019-06-11 22:26:10
    列表框 (ListBox) 将所提供的内容以列表的形式显示出来, 并可以选择其中的一项或多项内容,从形式上比使用复选框更好一些。 列表框中常用属性: ... 例如Items.Add方法用于向列表框添加项,...
  • MFC--列表框

    2021-11-12 09:44:26
    添加列表框控件 添加列表框选项 添加消息 添加变量 编辑消息 BOOL CMydlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_list.AddString("苹果"); m_...
  • Qt QListWidget列表框用法详解

    千次阅读 2022-01-25 13:30:02
    Qt QListWidget列表框用法详解 很多应用程序中需要以列表的形式向用户展示数据(资源),比如 Windows 操作系统会以列表的方式展示很多张桌面背景图(如图 1a) 所示),再比如很多音乐播放器中以列表的形式展示音乐...
  • 在文本框中输入内容,点击“添加”按钮后添加列表框中;点击“删除”按钮则从列表框中删除选中的元素。 protected void Button1_Click(object sender, EventArgs e) { // ListBox1.Text= TextBox1.Text+ ...
  • MFC 下拉列表框的设置

    千次阅读 2019-11-06 10:33:27
    设置下拉列表框: 步骤1:打开VS2015,新建项目工程,选择模块下的Visual C++-->MFC-->MFC应用程序,设定好项目文件名和路径,点击确定。 步骤2:进入应用程序类 型界面。勾选“基于对话框”,在“MFC的...
  • 本篇文章主要讲解并实例演示如何将编辑框CEdit和列表框CListBox中的内容写入文件 一.实现控件 按照如图布局控件。 对每个控件进行类绑定,右键控件类向导点击添加处理程序。 二.代码实现 生成文件按钮添加代码: ...
  • LabVIEW多列列表框简单玩法

    千次阅读 2022-04-15 22:22:46
    多列列表框简单玩法
  • 列表框的selected属性

    千次阅读 2021-06-10 17:17:36
    Φ是什么意思?读"fai".是直径的意思不?...而用作列表框和组合框有没有select属性列表框有selected,表示是否选中:If List1.Selected(i) Then 组合框只允许选一个,没有select,Combo1.ListIndex即为当前选中...
  • 本文要讲的是列表框控件(ListBox)及其使用实例。 Xtreme Toolkit Pro是屡获殊荣的VC界面库,是MFC开发中最全面界面控件套包,它提供了Windows开发所需要的11种主流的Visual C++ MFC控件,包括Command Bars、...
  • JavaScript实现下拉列表框添加选项

    千次阅读 2019-10-18 12:40:27
    效果展示 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <...select name="list" id="list"> <option>请选择&...
  • list control双击事件编辑列表框

    千次阅读 2018-06-01 11:21:06
    1、目标:实现在双击列表框时的动态修改,包括:  1)双击空白处时自动添加一行;  2)双击已有数据时使用显示编辑框实现动态修改子项。 2、重点内容:  1)List Control控件NM_DCLICK消息响应事件;  2)Edit ...
  • Unity UGUI 基础 之 DropDown(下拉列表框) 的简单使用(简单改变样式/动态下来列表的数据添加删除/列表事件监听等) 一、简单介绍 UGUI,是Unity自带的 GUI 系统,有别于 NGUI;使用 UGUI 也能制作出比较酷炫...
  • VC++ MFC List创建列表用法

    千次阅读 2018-05-06 10:35:45
    2、在类初始化函数添加List的初始化操作 2.1设置List的数据形式 m_List.InsertColumn(0, _T("列")); m_List.InsertColumn(1, _T("行")); m_List.InsertColumn(2, _T("扫描内容"))...
  • 可以添加不重复的内容添加到组合框列表中。
  • 下拉列表框 public Form2() { InitializeComponent();//由系统生成的对于窗体界面的定义方法,初始化窗体组件的 } public int index = -1;//设置 public int index1 = -1; public int index2 = -1; private ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 254,406
精华内容 101,762
关键字:

列表框list添加内容