VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 310|回复: 15

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

[复制链接]
51_avatar_middle
online_admins Syc 发表于 7 天前 | 显示全部楼层 |阅读模式
1、向列表框控件添加数据:
a、向列表框的结尾添加数据:
  1. m_ListBox.AddString(_T("1"));
  2. m_ListBox.AddString(_T("2"));
  3. m_ListBox.AddString(_T("10"));
  4. m_ListBox.AddString(_T("20"));
复制代码


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

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


这种插入方式不受 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、多选模式下的选中操作:
  1.     m_ListBox.SetSel(0);
  2.     m_ListBox.SetSel(1);
复制代码


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


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


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


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 列表控件

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

第7课免费试看,下载地址回复后可见:
游客,如果您要查看本帖隐藏内容请回复

#######################################################
获得所有教学视频、课件、源代码以及售后答疑请咨询客服QQ:
VC驿站官方客服QQ:8260671
#######################################################




上一篇:求救
下一篇:《实用VC编程之玩转控件》第8课:GroupBox 分组控件

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

02_avatar_middle
在线会员 Dvol 发表于 7 天前 | 显示全部楼层
好漂亮呀!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

78_avatar_middle
在线会员 csa 发表于 7 天前 | 显示全部楼层
不错不错,很好看

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

98_avatar_middle
在线会员 tomok 发表于 6 天前 | 显示全部楼层
楼主 早安
学习深入!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

78_avatar_middle
online_vip good20good 发表于 6 天前 | 显示全部楼层
好好学习,认真顶帖

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

95_avatar_middle
在线会员 zjh2008 发表于 6 天前 | 显示全部楼层
不错不错,很好看

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

41_avatar_middle
online_vip liguolong 发表于 6 天前 | 显示全部楼层
感谢分享           

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

97_avatar_middle
在线会员 李乐辉 发表于 6 天前 | 显示全部楼层
学习。。。。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

87_avatar_middle
online_vip shenchunlong 发表于 5 天前 | 显示全部楼层

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
在线会员 windowswan 发表于 5 天前 | 显示全部楼层
《实用VC编程之玩转控件》第7课:ListBox 列表控件谢谢楼主分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

49_avatar_middle
在线会员 yuanpinq 发表于 5 天前 | 显示全部楼层
看看………………………………

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

08_avatar_middle
在线会员 woliveyou 发表于 5 天前 | 显示全部楼层
学习深入!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

62_avatar_middle
online_vip08 longquan 发表于 3 天前 | 显示全部楼层
谢谢楼主分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

22_avatar_middle
在线会员 fashion530 发表于 3 天前 | 显示全部楼层
《实用VC编程之玩转控件》第7课:ListBox 列表控件《实用VC编程之玩转控件》第7课:ListBox 列表控件《实用VC编程之玩转控件》第7课:ListBox 列表控件

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

83_avatar_middle
online_vip z.mr 发表于 昨天 21:13 | 显示全部楼层
啦啦啦 更新了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

10_avatar_middle
online_vip08 小菜一碟 发表于 10 小时前 | 显示全部楼层
不错不错,又继续收下,谢谢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

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

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

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

GMT+8, 2018-11-14 20:16

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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