COMBOX的基本使用

(2015-07-21 23:10:27)

转载▼
标签:

it

分类: MFC
组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。

简易组合框中的列表框是一直显示的,效果如下图:

下拉式组合框默认不显示列表框,只有在点击了编辑框右侧的下拉箭头才会弹出列表框,列表框弹出后如下图:

下拉列表式组合框的编辑框是不能编辑的,只能由用户在下拉列表框中选择了某项后,在编辑框中显示其文本。下拉列表式组合框如下图:

经过上面的介绍,大家应该知道,最常用的当属下拉式组合框和下拉列表式组合框了,它们在很多时候能使程序看起来更专业,更简洁,让用户在进行选择操作时更方便。

组合框被操作时会向父窗口发送通知消息,这些通知消息及其含义如下:

CBN_CLOSEUP:组合框的列表框组件被关闭,简易组合框不会发送该通知消息
       CBN_DBLCLK:用户在某列表项上双击鼠标,只有简易组合框才会发送该通知消息
       CBN_DROPDOWN:组合框的列表框组件下拉,简易式组合框不会发送该通知消息
       CBN_EDITUPDATE:在编辑框准备显示改变了的正文时发送该消息,下拉列表式组合框不会发送该消息
       CBN_EDITCHANGE:编辑框的内容被用户改变了,与CBN_EDITUPDATE不同,该消息是在编辑框显示的正文被刷新后才发出的,下拉列表式组合框不会发送该消息
       CBN_ERRSPACE:组合框无法申请足够的内存来容纳列表项
       CBN_SELENDCANCEL:表明用户的选择应该取消,当用户在列表框中选择了一项,然后又在组合框控件外单击鼠标时就会导致该消息的发送
       CBN_SELENDOK:用户选择了一项,然后按了回车键或单击了下滚箭头,该消息表明用户确认了自己所作的选择
       CBN_KILLFOCUS:组合框失去了输入焦点
       CBN_SELCHANGE:用户通过单击或移动箭头键改变了列表的选择
       CBN_SETFOCUS:组合框获得了输入焦点

CComboBox类的主要成员函数

      因 为组合框是由编辑框和列表框组合而成的,所以组合框的操作和编辑框与列表框的操作有很多相似之处,同样的,CComboBox类的成员函数也和CEdit 类与CListBox类的成员函数有很多相似之处,不但功能相似,甚至函数名和参数也很相似。鸡啄米下面大概讲解下CComboBox类的主要成员函数, 更详细的内容可以参见MSDN。

 int GetCount( ) const;
       获取组合框控件的列表框中列表项的数量。

  int GetCurSel( ) const;
       获取组合框控件的列表框中选中项的索引,如果没有选中任何项,该函数返回CB_ERR。

 int SetCurSel(int nSelect);
       在组合框控件的列表框中选择某项。nSelect参数指定了要选择的列表项的索引,如果为-1则列表框中当前选择项被取消选中,编辑框也被清空。

DWORD GetEditSel( ) const;
       获取组合框控件的编辑框中当前选择范围的起始和终止字符的位置。该函数返回一个32位数,低16位存放起始位置,高16位存放选择范围后第一个非选择字符的位置。如果该函数用于下拉列表式组合框时,会返回CB_ERR。

BOOL SetEditSel(int nStartChar,int nEndChar);
       用于在组合框控件的编辑框中选择字符。nStartChar参数指定起始位置,nEndChar参数指定终止位置。

DWORD_PTR GetItemData(int nIndex) const;
       获取组合框中指定项所关联的32位数据。nIndex参数指定组合框控件的列表框某项的索引(从0开始)。

int SetItemData(int nIndex,DWORD_PTR dwItemData);
       为某个指定的组合框列表项设置一个关联的32位数。nIndex参数指定要进行设置的列表项索引。dwItemData参数指定要关联的新值。

void GetLBText(int nIndex,CString& rString) const;
       从组合框控件的列表框中获取某项的字符串。nIndex参数指定要获取字符串的列表项的索引,CString参数用于接收取到的字符串。

int GetLBTextLen(int nIndex) const;
       获取组合框控件的列表框中某项的字符串长度。nIndex参数指定要获取字符串长度的列表项的索引。

int GetTopIndex( ) const;
       获取组合框控件的列表框中第一个可见项的索引。

int SetTopIndex(int nIndex);
       将组合框控件的列表框中某个指定项设置为可见的。nIndex参数指定了该列表项的索引。该函数成功则返回0,有错误发生则返回CB_ERR。

BOOL LimitText(int nMaxChars);
       用于限制用户在组合框控件的编辑框中能够输入的最大字节长度。nMaxChars参数指定了用户能够输入文字的最大字节长度,如果为0则长度被限制为65535个字节。

int AddString(LPCTSTR lpszString);
       为组合框控件中的列表框添加新的列表项。lpszString参数是指向要添加的字符串的指针。该函数的返回值如果大于等于0,那么它就是新列表项的索 引,而如果有错误发生则会返回CB_ERR,如果没有足够的内存存放新字符串则返回CB_ERRSPACE。

int DeleteString(UINT nIndex);
       删除组合框中某指定位置的列表项。nIndex参数指定了要删除的列表项的索引。该函数的返回值如果大于等于0,那么它就是组合框中剩余列表项的数量。如果nIndex指定的索引超出了列表项的数量则返回CB_ERR。

int FindString(int nStartAfter,LPCTSTR lpszString) const;
       在 组合框控件的列表框中查找但不选中第一个包含指定前缀的列表项。nStartAfter参数指定了第一个要查找的列表项之前的那个列表项的索引。 lpszString指向包含要查找的前缀的字符串。该函数的返回值如果大于等于0,那么它是匹配列表项的索引,如果查找失败则返回CB_ERR。

int InsertString(int nIndex,LPCTSTR lpszString);
       向组合框控件的列表框中插入一个列表项。nIndex参数指定了要插入列表项的位置,lpszString参数则指定了要插入的字符串。该函数返回字符串 被插入的位置,如果有错误发生则会返回CB_ERR,如果没有足够的内存存放新字符串则返回CB_ERRSPACE。

int SelectString(int nStartAfter,LPCTSTR lpszString);
       在组合框控件的列表框中查找一个字符串,如果查找到则选中它,并将其显示到编辑框中。参数同FindString。如果字符串被查找到则返回此列表项的索引,如果查找失败则返回CB_ERR,并且当前选择项不改变。

此外,CComboBox类还继承了CWnd类的成员函数GetWindowText、SetWindowText等。

一个最简单的应用就是通过combox选择然后在文本框中显示出来:

主要代码如下:

//为combox添加下拉框的内容,默认index从0开始的

ComBox_1.AddString(_T("111"));
    ComBox_1.AddString(_T("222"));
    ComBox_1.AddString(_T("333"));
    ComBox_1.SetCurSel(0);
//为我们的文本框也设置默认的值
    SetDlgItemText(IDC_EDIT1,_T("TEXT"));
//我们希望在组合框中选中的列表项改变时,将最新的选择项实时显示到编辑框中,那么这就要用到CBN_SELCHANGE通知消息

//获取combox的索引 然后通过索引找到文本内容

int res=ComBox_1.GetCurSel();
    CString text;
    ComBox_1.GetLBText(res,text);

//将取到的文本显示到文本框中
    SetDlgItemText(IDC_EDIT1,text);

COMBOX的基本使用相关推荐

  1. Combox控件下拉选择不同值触发的动作响应

    项目中需要根据combox控件下拉列表选择不同的值,然后能触发相应的动作.比如我的项目中,通过combox空间的下拉列表选择不同的C盘,D盘,E盘,F盘,然后能在list控件中把各个盘符的文件目录列出 ...

  2. 使用Combox控件的一个问题

    Combox控件是MFC里边一个比较常用的控件,基本可以看成是一个文本框和一个下拉列表组合而成.但是我在用的时候碰到了一个问题,当我用AddString()函数加了4,5个字符串后,运行之后点击下拉箭 ...

  3. VS combox控件的简单用法

    一.conbox最最简单的用法 效果是这样的: 代码: private void Form1_Load(object sender, EventArgs e){comboBox1.Items.Add( ...

  4. 枚举与Combox的SelectedIndex绑定出现怪异问题的解决方案

    在Combox中有一系列的选项,其选项的SelectedIndex值对应了相应的枚举值,而这些枚举值会影响着后续的工作模式,所以就想着将Combox的SelectedIndex和枚举值进行双向绑定,代 ...

  5. Winform下的Combox根据值来选中项

    其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<DictionaryEntry>类型的(System.Collec ...

  6. MFC——ComBox用法大全

    (1):先看第一篇:        CComBox控件使用方法 CComBox控件在MFC编程经常使用到.主要涉及到几个功能: 1.值的插入,这通常会使用两种方法 1) int AddString( ...

  7. vs2008中combox用法总结

    1.判断是否为空 m_CheckPoint.GetCurSel()==-1; 2.清空 m_CheckPoint.ResetContent(); 3.添加 m_CheckPoint.AddString ...

  8. Combox使用的一些技巧

    这些天做一个小型的CMS,也就几张表,用WCF+LINQ2SQL+Silverlight这种方式开发的,对最常用的控件如DataGrid,DataForm以及Toolkit里其它一些控件的用法有了一定 ...

  9. easyui combox使用

    当combox的值改变时触发,采用如下方式: 界面 Html代码 <select id="select_percent" class="easyui-combobo ...

  10. WPF 中设置Combox下拉框Text 显示值

    最近在写一个WPF客户端的一个小程序,其中有个小需求如下: 展示下拉列表里面有树形结构 点击下拉子项时同时显示父级和子级文本 也就是说在DisplayMember 中有两种显示方式 下拉列表显示时,显 ...

最新文章

  1. Maven找不到要运行的JUnit测试
  2. 求多个四元数的平均数
  3. php mysql log文件怎么打开_如何查看mysql的日志文件
  4. 如何让 Drupal 使用 Wordpress 形式的编辑代码?
  5. Android app:transformNativeLibsWithStripDebugSymbolForDebug错误分析
  6. 对查询出来的结果进行筛选(having)
  7. 解决iex -S mix报错
  8. 22 C#中的异常处理入门 try catch throw
  9. c语言坐标三角形判断,C语言输入三角形边长判断其类型并输出面积实例代码
  10. 一天一大 lee(计数二进制子串)难度:简单-Day20200810
  11. 【直击DTCC】宝存CEO阳学仕:如何保障SSD的IO确定性?
  12. 【IDEA设置和 操作遇到的 】会持续更新
  13. Android studio 仿微信朋友圈页面(简单版)
  14. redhat7磁盘扩容详细步骤
  15. Java50道经典编程题:(七)输出不同种类字符个数 ——字符串的遍历及循环结构的使用
  16. 让你平步青云的10个谈话技巧
  17. Android Studio主导Unity打包方式的安卓打包
  18. 数值型数据和标称型数据
  19. 明比阅历浅,暗拼体力衰,指下讲武德,码上笑春风
  20. 电气控制基础-解析软启动器

热门文章

  1. kettle实现数据清洗
  2. 300W 、300W-LP、300W-3d-face数据集
  3. 【web前端】CSS高级技巧(精灵图,字体图标,CSS三角,CSS用户界面样式,文字与图片垂直对齐,溢出的文字省略号显示,常见布局技巧,CSS初始化)
  4. 如何修改Apple Developer ID的密码?
  5. [zt]博士圈的呐喊:不孝有三 读博为大
  6. Android 性能优化最佳实践
  7. PC_浮点数表示/定点数和浮点数比较/溢出/C语言中的浮点数类型
  8. spring cloud localhost 拒绝连接
  9. 03-05 创建和编辑AutoCAD实体(五) 使用图层、颜色和线型(3)使用线型
  10. CSS 强制不换行,溢出隐藏显示省略号