VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2262|回复: 48

《实用VC编程之玩转控件》第7课:ListBox 列表控件

[复制链接]
51_avatar_middle
online_admins 发表于 2018-11-7 23:24:02 | 显示全部楼层 |阅读模式
1、向列表框控件添加数据:
a、向列表框的结尾添加数据:

跟下拉框控件一样,添加完成后,数据的顺序并不是我们添加时候的顺序,调整下控件的 Sort 自动排序属性就可以了。

b、自定义位置插入数据:
这种插入方式不受 Sort 属性的影响,但是需要提供插入的索引位置。

2、获得列表框中总共有多少条目:
  1. int nCount = m_ListBox.GetCount();
复制代码


3、从列表框删除数据:
  1. m_ListBox.DeleteString(0);    //删除指定索引的数据
  2. m_ListBox.ResetContent();    //删除全部数据
复制代码


4、设置列表框选中某条数据:
  1. m_ListBox.SetCurSel(1);
复制代码

参数传递要设置的索引序号,如果不想选中任何一条,那么就传递 -1.

5、获得列表框当前选中的是哪条数据:
  1. int idx =m_ListBox.GetCurSel();
复制代码

返回以0开始的选中的数据索引,如果没选中任何一条数据,则返回 -1.

6、列表框的多选模式:
刚才给大家讲解的 SetCurSel 和 GetCurSel 都是针对列表框的单选模式进行的,大家在使用其他软件的时候也注意过有的列表框控件是支持多选的,还支持 Ctrl、Shift 键快捷操作,那么应该怎么做呢?
答案是:控件的 Selection 属性进行修改。默认是 Single,也就是单选。我们可以改成 Multiple、Extended,都是多选的意思。其中 Extended 支持 Ctrl、Shift 键操作。None:选中item,但是不高亮,只显示该item上交点(item外有矩形框)。

a、多选模式下的选中操作:
b、多选模式下的获取选中操作:

7、获得指定索引的字符串内容:

8、开源控件类:
https://www.codeproject.com/Arti ... Box-derived-control
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Arti ... -List-based-Listbox
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Articles/12773/CFontListBox
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Arti ... -CListBox-Version-2
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Arti ... -Multi-line-ListBox
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Arti ... xColorPickerST-v1-1
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Arti ... dio-Buttons-MFC-ver
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Arti ... le-ListBox-Tutorial
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Arti ... ting-check-state-no
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Arti ... ith-ToolTip-Support
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Arti ... ith-selectable-text
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Articles/11359/Transparent-ListBox
《实用VC编程之玩转控件》第7课:ListBox 列表控件

https://www.codeproject.com/Arti ... t-Ownerdraw-Listbox
《实用VC编程之玩转控件》第7课:ListBox 列表控件

具体操作细节见视频教程的演示和讲解!


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
教程在线观看地址:
https://www.bilibili.com/video/av38392055/?p=8
MP4高清视频下载地址:链接:https://pan.baidu.com/s/1_xcWk7eH_VNLQVpL-o7V0A 提取码:nc7i
本节课件下载(回复后可见):
游客,如果您要查看本帖隐藏内容请回复

备注:VIP会员可免费下载本站所有资源(点击查看)
提示:通过购买VC驿站U盘打包(点击查看)也可加入终身Vip会员^_^




上一篇:《实用VC编程之玩转控件》第6课:ComboBox下拉框控件
下一篇:《实用VC编程之玩转控件》第8课:GroupBox 分组控件
02_avatar_middle
在线会员 发表于 2018-11-7 23:43:50 | 显示全部楼层
好漂亮呀!
78_avatar_middle
在线会员 发表于 2018-11-7 23:52:14 | 显示全部楼层
不错不错,很好看
98_avatar_middle
在线会员 发表于 2018-11-8 08:55:02 | 显示全部楼层
楼主 早安
学习深入!
78_avatar_middle
online_vip 发表于 2018-11-8 14:38:35 | 显示全部楼层
好好学习,认真顶帖
95_avatar_middle
在线会员 发表于 2018-11-8 17:11:15 | 显示全部楼层
不错不错,很好看
41_avatar_middle
online_vip 发表于 2018-11-8 17:51:41 | 显示全部楼层
感谢分享           
97_avatar_middle
donate_vip 发表于 2018-11-8 22:37:32 | 显示全部楼层
学习。。。。
87_avatar_middle
online_vip 发表于 2018-11-9 09:05:19 | 显示全部楼层

1、向列表框控件添加数据:
a、向列表框的结尾添加数据:
m_ListBox.AddString(_T("1"));
m_ListBox.AddString(_T("2"));
m_ListBox.AddString(_T("10"));
m_ListBox.AddString(_T("20"));
复制代码


跟下拉框控件一样,添加完成后,数据的顺序并不是我们添加时候的顺序,调整下控件的 Sort 自动排序属性就可以了。

b、自定义位置插入数据:
m_ListBox.InsertString(0, _T("1"));
m_ListBox.InsertString(1, _T("2"));
m_ListBox.InsertString(2, _T("10"));
m_ListBox.InsertString(1, _T("20"));
复制代码


这种插入方式不受 Sort 属性的影响,但是需要提供插入的索引位置。

2、获得列表框中总共有多少条目:
int nCount = m_ListBox.GetCount();
复制代码


3、从列表框删除数据:
m_ListBox.DeleteString(0);    //删除指定索引的数据
m_ListBox.ResetContent();    //删除全部数据
复制代码


4、设置列表框选中某条数据:
m_ListBox.SetCurSel(1);
复制代码

参数传递要设置的索引序号,如果不想选中任何一条,那么就传递 -1.

5、获得列表框当前选中的是哪条数据:
int idx =m_ListBox.GetCurSel();
复制代码

返回以0开始的选中的数据索引,如果没选中任何一条数据,则返回 -1.

6、列表框的多选模式:
刚才给大家讲解的 SetCurSel 和 GetCurSel 都是针对列表框的单选模式进行的,大家在使用其他软件的时候也注意过有的列表框控件是支持多选的,还支持 Ctrl、Shift 键快捷操作,那么应该怎么做呢?
答案是:控件的 Selection 属性进行修改。默认是 Single,也就是单选。我们可以改成 Multiple、Extended,都是多选的意思。其中 Extended 支持 Ctrl、Shift 键操作。None:选中item,但是不高亮,只显示该item上交点(item外有矩形框)。

a、多选模式下的选中操作:
    m_ListBox.SetSel(0);
    m_ListBox.SetSel(1);
复制代码


b、多选模式下的获取选中操作:
    int sel_count = m_ListBox.GetSelCount();
    int* pSel = new int[sel_count];
    m_ListBox.GetSelItems(sel_count, pSel);
    for (int idx = 0; idx < sel_count; ++idx)
    {
        int sel_idx = pSel[idx];
        //其他操作
    }
    delete[] pSel;
复制代码


7、获得指定索引的字符串内容:
a、MFC的CString方式:
        CString strText;
        m_ListBox.GetText(sel_idx, strText);
复制代码


b、非CString方式:
        int text_len = m_ListBox.GetTextLen(sel_idx);
        TCHAR* pszText = new TCHAR[text_len + 1];
        memset(pszText, 0, sizeof(TCHAR)*text_len);
        m_ListBox.GetText(sel_idx, pszText);
        delete[] pszText;
复制代码


8、开源控件类:
https://www.codeproject.com/Arti ... Box-derived-control
  

https://www.codeproject.com/Arti ... -List-based-Listbox
  

https://www.codeproject.com/Articles/12773/CFontListBox
  

https://www.codeproject.com/Arti ... -CListBox-Version-2
  

https://www.codeproject.com/Arti ... -Multi-line-ListBox
  

https://www.codeproject.com/Arti ... xColorPickerST-v1-1
  

https://www.codeproject.com/Arti ... dio-Buttons-MFC-ver
  

https://www.codeproject.com/Arti ... le-ListBox-Tutorial
  

https://www.codeproject.com/Arti ... ting-check-state-no
  

https://www.codeproject.com/Arti ... ith-ToolTip-Support
  

https://www.codeproject.com/Arti ... ith-selectable-text
  

https://www.codeproject.com/Articles/11359/Transparent-ListBox
  

https://www.codeproject.com/Arti ... t-Ownerdraw-Listbox
  

具体操作细节见视频教程的演示和讲解!

第7课免费试看,下载地址回复后可见:
69_avatar_middle
在线会员 发表于 2018-11-9 10:23:20 | 显示全部楼层
《实用VC编程之玩转控件》第7课:ListBox 列表控件谢谢楼主分享
49_avatar_middle
在线会员 发表于 2018-11-9 16:09:17 | 显示全部楼层
看看………………………………
08_avatar_middle
在线会员 发表于 2018-11-9 21:59:34 | 显示全部楼层
学习深入!
62_avatar_middle
在线会员 发表于 2018-11-11 08:06:16 | 显示全部楼层
谢谢楼主分享
22_avatar_middle
在线会员 发表于 2018-11-11 20:49:59 | 显示全部楼层
《实用VC编程之玩转控件》第7课:ListBox 列表控件《实用VC编程之玩转控件》第7课:ListBox 列表控件《实用VC编程之玩转控件》第7课:ListBox 列表控件
83_avatar_middle
online_vip 发表于 2018-11-13 21:13:26 | 显示全部楼层
啦啦啦 更新了
10_avatar_middle
在线会员 发表于 2018-11-14 09:50:05 | 显示全部楼层
不错不错,又继续收下,谢谢
56_avatar_middle
在线会员 发表于 2018-11-16 21:13:40 | 显示全部楼层

不错不错,又继续收下,谢谢
98_avatar_middle
online_vip 发表于 2018-11-17 13:48:23 | 显示全部楼层
不错不错,很好看
62_avatar_middle
online_vip 发表于 2018-11-17 17:42:31 | 显示全部楼层
第7课免费试看
25_avatar_middle
online_vip 发表于 2018-11-18 10:33:08 | 显示全部楼层
谢谢更新。。。。。。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-7-17 13:28

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表