ComboBox列表智能自动下拉
15 下拉框(combobox)

15ComboboxCombobox是下拉框控件。
由一个输入框、下拉按钮组成。
当点击下拉按钮之后,会弹出下拉列表,用户选择相应的选项后,下拉列表会收起,用户选择的选项会出现在输入框中。
Combobox不是定义在tkinter中的控件,而是定义在ttk中的一个控件。
Combobox不是继承的Widget类,而是继承了Entry类,因此可以把Combobox当成是Entry类的扩展。
下拉框控件和列表框控件非常类似,不过只显示为一个输入框,更省窗口空间。
15.1属性属性描述class_设置创建的Combobox实例的名字cursor鼠标位于Combobox的形状exportselection决定是否可以复制选中的文本内容。
如果exportselection=True,表示可以。
exportselection=False,表示不可复制列表框中选中的选项height下拉列表的行数。
默认值是20justify输入框中的对齐方式。
postcommand下拉列表弹出前的回调函数。
用于动态改变下拉列表内容。
takefocus能够使用Tab获得输入焦点values设置下拉列表的值width定义输入框的宽度。
默认值是20。
下拉箭头的宽度是固定的,不可调整。
15.1.1class_设置创建的Combobox的名字。
这个名字只能在创建实例的时候赋值,不能动态更改。
15.1.2cursor鼠标位于Combobox控件时的形状。
具体的关于cursor的介绍见3.2.6节。
不过此属性对combobox不起作用,鼠标的形状不会发生改变15.1.3exportselection决定是否可以复制选中的文本内容。
如果exportselection=True,表示可以。
exportselection=False,表示不可复制选中的选项。
不过此属性对于Combobox控件不起作用。
15.1.4height确定下拉列表的行数或者项目数。
默认值是20,如果超过这个默认值,会自动出现滚动条。
Winform桌面应用程序中Combobox三级下拉菜单连动问题的解决方案

.Net之Winform桌面应用程序中Combobox三级下拉菜单连动问题地解决方案收藏由于上传数据库不方便,所以,就直接使用XML文件做数据库吧.这是实现后地效果截图:三级菜单对应地XML文件(数据库):第一级:省/直辖市,对应地XML文件:Location_Province.xml第二级:地/市级,对应地XML文件:Location_City.xml第三级:县/区级,对应地XML文件:Location_Area.xml以下为三个XML文件,其中第一级为全部,由于文件太大,所以第二三级为部分XML代码片段.(1)省/直辖市,对应地XML文件:Location_Province.xml<?xml version="1.0" standalone="yes"?><NewDataSet><xs:schema id="NewDataSet" xmlns="" xmlns:xs="/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="Table"><xs:complexType><xs:sequence><xs:element name="id" type="xs:int" minOccurs="0" /><xs:element name="province" type="xs:string" minOccurs="0" /><xs:element name="provinceID" type="xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><Table><id>1</id><province>北京市</province><provinceID>110000</provinceID></Table><Table><id>2</id><province>天津市</province><provinceID>120000</provinceID></Table><Table><id>3</id><province>河北省</province><provinceID>130000</provinceID> </Table><Table><id>4</id><province>山西省</province><provinceID>140000</provinceID> </Table><Table><id>5</id><province>内蒙古自治区</province> <provinceID>150000</provinceID> </Table><Table><id>6</id><province>辽宁省</province><provinceID>210000</provinceID> </Table><Table><id>7</id><province>吉林省</province><provinceID>220000</provinceID> </Table><Table><id>8</id><province>黑龙江省</province><provinceID>230000</provinceID> </Table><Table><id>9</id><province>上海市</province><provinceID>310000</provinceID> </Table><Table><id>10</id><province>江苏省</province><provinceID>320000</provinceID> </Table><Table><id>11</id><province>浙江省</province><provinceID>330000</provinceID> </Table><Table><id>12</id><province>安徽省</province><provinceID>340000</provinceID></Table><Table><id>13</id><province>福建省</province><provinceID>350000</provinceID></Table><Table><id>14</id><province>江西省</province><provinceID>360000</provinceID></Table><Table><id>15</id><province>山东省</province><provinceID>370000</provinceID></Table><Table><id>16</id><province>河南省</province><provinceID>410000</provinceID></Table><Table><id>17</id><province>湖北省</province><provinceID>420000</provinceID></Table><Table><id>18</id><province>湖南省</province><provinceID>430000</provinceID></Table><Table><id>19</id><province>广东省</province><provinceID>440000</provinceID></Table><Table><id>20</id><province>广西壮族自治区</province> <provinceID>450000</provinceID></Table><Table><id>21</id><province>海南省</province><provinceID>460000</provinceID> </Table><Table><id>22</id><province>重庆市</province><provinceID>500000</provinceID> </Table><Table><id>23</id><province>四川省</province><provinceID>510000</provinceID> </Table><Table><id>24</id><province>贵州省</province><provinceID>520000</provinceID> </Table><Table><id>25</id><province>云南省</province><provinceID>530000</provinceID> </Table><Table><id>26</id><province>西藏自治区</province> <provinceID>540000</provinceID> </Table><Table><id>27</id><province>陕西省</province><provinceID>610000</provinceID> </Table><Table><id>28</id><province>甘肃省</province><provinceID>620000</provinceID> </Table><Table><id>29</id><province>青海省</province><provinceID>630000</provinceID> </Table><Table><id>30</id><province>宁夏回族自治区</province><provinceID>640000</provinceID></Table><Table><id>31</id><province>新疆维吾尔自治区</province><provinceID>650000</provinceID></Table><Table><id>32</id><province>台湾省</province><provinceID>710000</provinceID></Table><Table><id>33</id><province>香港特别行政区</province><provinceID>810000</provinceID></Table><Table><id>34</id><province>澳门特别行政区</province><provinceID>820000</provinceID></Table></NewDataSet>第二级:地/市级,对应地XML文件:Location_City.xml<?xml version="1.0" standalone="yes"?><NewDataSet><xs:schema id="NewDataSet" xmlns="" xmlns:xs="/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="Table"><xs:complexType><xs:sequence><xs:element name="id" type="xs:int" minOccurs="0" /><xs:element name="city" type="xs:string" minOccurs="0" /><xs:element name="cityID" type="xs:string" minOccurs="0" /><xs:element name="father" type="xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><Table><id>1</id><city>市辖区</city><cityID>110100</cityID><father>110000</father></Table><Table><id>2</id><city>县</city><cityID>110200</cityID><father>110000</father></Table><Table><id>3</id><city>市辖区</city><cityID>120100</cityID><father>120000</father></Table><Table><id>4</id><city>县</city><cityID>120200</cityID><father>120000</father></Table><!-- //这里还有N多个--></NewDataSet>第三级:县/区级,对应地XML文件:Location_Area.xml<?xml version="1.0" standalone="yes"?><NewDataSet><xs:schema id="NewDataSet" xmlns="" xmlns:xs="/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="Table"><xs:complexType><xs:sequence><xs:element name="id" type="xs:int" minOccurs="0" /><xs:element name="area" type="xs:string" minOccurs="0" /><xs:element name="areaID" type="xs:string" minOccurs="0" /><xs:element name="father" type="xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><Table><id>1</id><area>东城区</area><areaID>110101</areaID><father>110100</father></Table><Table><id>2</id><area>西城区</area><areaID>110102</areaID><father>110100</father></Table><Table><id>3</id><area>崇文区</area><areaID>110103</areaID><father>110100</father></Table><Table><id>4</id><area>宣武区</area><areaID>110104</areaID><father>110100</father></Table><Table><id>5</id><area>朝阳区</area><areaID>110105</areaID><father>110100</father></Table><Table><id>6</id><area>丰台区</area><areaID>110106</areaID><father>110100</father> </Table><Table><id>7</id><area>石景山区</area> <areaID>110107</areaID> <father>110100</father> </Table><Table><id>8</id><area>海淀区</area><areaID>110108</areaID> <father>110100</father> </Table><Table><id>9</id><area>门头沟区</area> <areaID>110109</areaID> <father>110100</father> </Table><Table><id>10</id><area>房山区</area><areaID>110111</areaID> <father>110100</father> </Table><Table><id>11</id><area>通州区</area><areaID>110112</areaID> <father>110100</father> </Table><Table><id>12</id><area>顺义区</area><areaID>110113</areaID> <father>110100</father> </Table><Table><id>13</id><area>昌平区</area><areaID>110114</areaID> <father>110100</father> </Table><Table><id>14</id><area>大兴区</area><areaID>110115</areaID><father>110100</father></Table><Table><id>15</id><area>怀柔区</area><areaID>110116</areaID><father>110100</father></Table><Table><id>16</id><area>平谷区</area><areaID>110117</areaID><father>110100</father></Table><Table><id>17</id><area>密云县</area><areaID>110228</areaID><father>110200</father></Table><Table><id>18</id><area>延庆县</area><areaID>110229</areaID><father>110200</father></Table><!-- //这里还有N多个--></NewDataSet>这里先讲一下三者之间地关系:三个文件中分别有<provinceID>110000</provinceID><cityID>110100</cityID><areaID>110229</areaID>之类地ID号,它们都是唯一地.而City,Area一级中都存在一个:<father>110000</father>之类地元素,分别与其父级相应ID 号对应.这样,三级菜单之间就关联起来了.关键代码:为方便描述,示意一下放代码地区域:namespace AgencyWingoon{public partial class CompanyInfoForm : Form{// A区}}将DataSet, DataTable相关变量放在上述地A区内:DataSet dsProvince = null;DataSet dsCity = null;DataSet dsArea = null;DataTable dtProvince = null;DataTable dtCity = null;DataTable dtArea = null;Form_Load事件中:(也放A区内)private void CompanyInfoForm_Load(object sender, EventArgs e){//初始化下拉菜单:InitLocation();//下面是其他代码// .....}以下代码全部也放在A区内:private void InitLocation(){string xmlFileLocation_Province = @"./Location/Location_Province.xml";string xmlFileLocation_City = @"./Location/Location_City.xml";string xmlFileLocation_Area = @"./Location/Location_Area.xml";//从XML文件中读取记录,加载为DataSetdsProvince = new DataSet();dsProvince.ReadXml(xmlFileLocation_Province);dtProvince = dsProvince.Tables[0];dsCity = new DataSet();dsCity.ReadXml(xmlFileLocation_City);dtCity = dsCity.Tables[0];dsArea = new DataSet();dsArea.ReadXml(xmlFileLocation_Area);dtArea = dsArea.Tables[0];BindProvinceData();}// cmbBoxProvince 省/直辖市下拉菜单选项变化时地事件:private void cmbBoxProvince_SelectedIndexChanged(object sender, EventArgs e){BindCityData();this.cmbBoxCity.SelectedIndex = 0;BindAreaData();this.cmbBoxArea.SelectedIndex = 0;}// cmbBoxCity 地/市级下拉菜单选项变化时地事件:private void cmbBoxCity_SelectedIndexChanged(object sender, EventArgs e){BindAreaData();this.cmbBoxArea.SelectedIndex = 0;}// 绑定省/直辖市数据private void BindProvinceData(){cmbBoxProvince.DataSource = dtProvince;cmbBoxProvince.DisplayMember = "province";cmbBoxProvince.ValueMember = "provinceID";}// 绑定地/市级数据private void BindCityData(){string provinceId = dtProvince.Rows[this.cmbBoxProvince.SelectedIndex]["provinceID"].ToString();dtCity.DefaultView.RowFilter = "father = " + provinceId;cmbBoxCity.DataSource = dtCity.DefaultView;cmbBoxCity.DisplayMember = "city";cmbBoxCity.ValueMember = "cityID";}// 绑定县/区级数据private void BindAreaData(){string provinceId = dtProvince.Rows[this.cmbBoxProvince.SelectedIndex]["provinceID"].ToString();dtCity.DefaultView.RowFilter = "father = " + provinceId;string cityId = dtCity.DefaultView.ToTable().Rows[this.cmbBoxCity.SelectedIndex]["cityID"].ToString();dtArea.DefaultView.RowFilter = "father = " + cityId;cmbBoxArea.DataSource = dtArea.DefaultView;cmbBoxArea.DisplayMember = "area";cmbBoxArea.ValueMember = "areaID";}本文来自CSDN博客,转载请标明出处:/johnsuna/archive/2007/07/16/1693890.aspx11 / 11。
Qt基础教程之QComboBox下拉框及用法

QComboBox 是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当作一个 QLineEdit 用作输入。
QComboBox 除了显示可见下拉列表外,每个项(item,或称列表项)还可以关联一个 QVariant 类型的变量,用于存储一些不可见数据。
实例演示 QComboBox(和 QPlainTextEdit,后续会讲)的使用,其运行时界面如图 1 所示。
图 1 实例 samp4_6 运行界面QComboBox 的用法设计时属性设置QComboBox 主要的功能是提供一个下拉列表供选择输入。
在界面上放置一个 QComboBox 组件后,双击此组件,可以出现如图 2 所示的对话框,对QComboBox 组件的下拉列表的项进行编辑。
在图 2 所示的对话框中,可以进行编辑,如添加、删除、上移、下移操作,还可以设置项的图标。
图 2 QComboBox 组件设计时的列表项编辑器用代码添加简单项窗口上的“初始化列表”按钮初始化下拉列表框的列表内容,其代码如下:void Widget::on_btnIniItems_clicked(){ //"初始化列表"按键QIcon icon;icon.addFile(":/images/icons/aim.ico");ui->comboBox->clear(); //清除列表for (int i=0;i<20;i++)ui->comboBox->addItem(icon,QString::asprintf("Item %d",i)); //带图标//ui->comboBox->addItem(QString::asprintf("Item %d",i)); //不带图标}添加一个项时可以指定一个图标,图标来源于资源文件。
addItem() 用于添加一个列表项,如果只是添加字符串列表项,而且数据来源于一个 QStringList 变量,可以使用 addltems() 函数,示例代码如下:ui->comboBox->clear();QStringList strList;strList<<"北京"<<"上海"<<"天津"<<"河北省"<<"山东省"<<"山西省";ui->comboBox->addItems(strList);添加具有用户数据的项 QComboBox::addltem() 函数的两种参数的原型定义如下:不管是哪一个 addItem() 函数,后面都有一个可选的 QVariant 类型的参数 userData,可以利用这个变量存储用户定义数据。
ComboBox的使用总结

1. 设定默认值把属性Style->Sort去掉,这一步必须的CComboBox *pBox = (CComboBox *)GetDlgItem( IDC_COMBOBOX1 ) ; //假设ID为IDC_COMBOBOX1pBox->SetCurSel( 0 ) ; //设置为第零个元素一、如何添加/删除Combo Box内容1. 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。
换行用ctrl+回车。
2. 在程序初始化时动态添加如://控件内容初始化CString strTemp;((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消除现有所有内容for(int i=1;i<=100;i++){strTemp.Format("%d",i);((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);}3. 下拉的时候添加如:CString strTemp;int iCount=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCount();//取得目前已经有的行数if(iCount<1)//防止重复多次添加{((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();for(int i=1;i<=100;i++){strTemp.Format("%d",i);((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);}}4. 删除DeleteString( UINT nIndex )//删除指定行,5. 插入InsertString( int nIndex, LPCTSTR lpszItem )//将行插入到指定位置6. 查找FindString( int nStartAfter, LPCTSTR lpszItem )//可以在当前所有行中查找指定的字符传的位置,nStartAfter指明从那一行开始进行查找。
ComboBox列表智能自动下拉

namespace WindowsApplication1
{
public partial class Form1 : Form
{
// 构造函数
public Form1()
{
InitializeComponent();
// 构造数据
loaddata();
}
// 构造数据源
private DataTable mdataSource = new DataTable();
// 初始化数据
// 特殊出标志
private bool flag = false;
/// <summary> ቤተ መጻሕፍቲ ባይዱ
/// combobox 输入事件
/// </summary>
/// <param name="sender"></param>
dr5["value"] = "5";
dt.Rows.Add(dr5);
DataRow dr6 = dt.NewRow();
dr6["name"] = "date";
dr6["value"] = "6";
ComboBox列表智能自动下拉
实际操作步骤和思路如下:
1、在text_changed里触发
2、在比对后要进行加载将要显示相关数据(如动态数据绑定等),向下拉列表添加内容: comboBox1.Items.Add(str); 使用此语句可以添加str到下拉列表中
3、最后,设置 comboBox1.DroppedDown = true; 可以显示下拉列表的内容。
jQueryEasyUI-ComboBox(下拉列表框)

jQueryEasyUI-ComboBox(下拉列表框)⼀、combobox 前台页⾯动态加载显⽰判断输⼊值在下拉列表是否存在var nameStr ='';$(document).ready(function(){$('#customerId').combobox({prompt:'请输⼊或选择客户名称', //prompt属性为没有选中任何选项的时候显⽰的标签如“--性别--”url:'${rc.contextPath}/sale/findBusinessPartnerByName',valueField:'id',textField:'text' ,onClick: function(node) {attributeShow($("#customerId").combotree("getValue"));},filter: function(q, row){ //filter属性模糊查询var opts = $(this).combobox('options');//return row[opts.textField].indexOf(q) == 0;return row[opts.textField].indexOf(q)>-1;//将从头位置匹配改为任意匹配},onLoadSuccess: function(){var partnerId = '${(saleOrder.partnerId)!}';if(partnerId){$('#customerId').combobox('setValue',partnerId);}},onSelect: function(){var partnerId = $("#customerId").combotree("getValue");$("#business_partner_id").val(partnerId);findBusinessPartnerContactByPartnerId(partnerId);findSaleAddressByPartnerId(partnerId);},onChange: function(newValue, oldValue){var v = $("#customerId").combotree("getText");var arr = nameStr.split(',');var index = $.inArray(v, arr);if(index < 0 ){$("#business_partner_id").val('');}else{$("#business_partner_id").val($("#customerId").combobox("getValue"));}},formatter: function(row){var opts = $(this).combobox('options');nameStr += row[opts.textField] + "," ;return row[opts.textField];}});});Combobox⽤法和⽅法参数:1、需要引⼊class=" easyui-combobox”2、参数设置需要在data-options中设置3、属性参数配置:valueField:基础数据值名称绑定到Combobox(提交值)textField:基础数据的字段名称绑定的Combobox(显⽰值)mode:定义当⽂本改变时如何加载列表数据,当设置为remote模式下,什么类型的⽤户将被发送http请求参数名为'q'的服务器,以获取新的数据。
MFC中combo下拉框的使用

MFC中combo下拉框的使用组合框控件简介组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(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:组合框获得了输入焦点组合框控件的创建MFC将组合框控件的所有操作都封装到了CComboBox类中。
ComboBox 使用方法

Combo Box (组合框)控件很简单,可以节省空间。
从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。
用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。
下面的例子简要说明如何利用MFC CComboBox Class来操作字符串列表。
1、定义控件对应变量假定已经创建了一个Dialog,并且从控件工具箱将Combo Box 控件拖放到上面。
打开Class Wizard,添加控件对应变量,如:CComboBox m_cbExamble;在后面的代码中会不断使用这个变量。
2、向控件添加Items1) 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。
换行用ctrl+回车。
2) 利用函数AddString() 向Combo Box 控件添加Items,如:m_cbExample.AddString(“StringData1”);m_cbExample.AddString(“StringData2”);m_cbExample.AddString(“StringData3”);3) 也可以调用函数InsertString() 将Item 插入指定位置nIndex,如:m_cbExample.InsertString( nIndex, “StringData” );3、从控件得到选定的Item假设在控件列表中已经选定某项,现在要得到被选定项的内容,首先要得到该项的位置,然后得到对应位置的内容。
这里会用到两个函数,如:int nIndex = m_cbExample.GetCurSel();CString strCBText;m_cbExample.GetLBText( nIndex, strCBText);这样,得到的内容就保存在strCBText 中。
若要选取当前内容,可调用函数GetWindowText(strCBText)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
namespace WindowsApplication1 {
public partial class Form1 : Form {
// 构造函数 public Form1() {
InitializeComponent(); // 构造数据 loaddata(); } // 构造数据源 private DataTable mdataSource = new DataTable();
>
senderComboBox.MaxDropDownItems)
? SystemInformation.VerticalScrollBarWidth : 0;
int newWidth; // 取得数据源 DataTable dt = (DataTable)senderComboBox.DataSourc实际操作步骤和思路如下: 1、在 text_changed 里触发 2、在比对后要进行加载将要显示相关数据(如动态数据绑定等),向下拉列表添加内容: comboBox1.Items.Add(str); 使用此语句可以添加 str 到下拉列表中 3、最后,设置 comboBox1.DroppedDown = true; 可以显示下拉列表的内容。 A 、 需 要 对 comboBox 进 行 设 置 的 属 性 有 : comboBox1.AutoCompleteMode=System.Windows.Forms.AutoCompleteMode.Suggest; 另外 comboBox1.AutoCompleteSource 和 comboBox1.AutoCompleteCustomSource 可以根据具 体的应用进行相关设置。 B、不足和改进: text 中的光标会自动跑到最左端,这样会造成老在最左端输入数据,这样 对人是非常不习惯的。所以必须把光标自动移到最右端。改进的办法是利用 SelectionStart 属性(获取或设置组合框中选定文本的起始索引),来进行移到光标。 int len_cmb = 0; len_cmb = cmb_UName.Text.Length; cmb_UName.SelectionStart = len_cmb; C、对于操作的方便性,可以考虑 comboBox_KeyDown 事件,对回车键进行触发
//checks if a scrollbar will be displayed.
//If yes, then get its width to adjust the size of the drop down list.
int vertScrollBarWidth =
(senderComboBox.Items.Count
******************************************************************************* ***************
ComBoBox 自动筛选,自动调整下拉宽度
这个写的比较简单还没做封装 指定 combobox 的数据源为必须 datatable .有兴趣的可以做参 考,重新封装.
BindDate(mdataSource); boBox1.Text = string.Empty; return; } flag = false; string str = boBox1.Text; // 根据输入的值自带筛选 bool validate = Fillter(str);
private void cmb_UName_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Enter) {
……… }
}
本 文 来 自 CSDN 博 客 , 转 载 请 标 明 出 处 : /feiji323/archive/2010/06/24/5690563.aspx
Graphics g = null; Font font = null; try {
ComboBox senderComboBox = sender as ComboBox;
int width = senderComboBox.Width; g = senderComboBox.CreateGraphics(); font = senderComboBox.Font;
int i = str.Length - 1; Fillter(str.Substring(0, i)); isvalida = false; }
} return isvalida; }
/// <summary> /// 自动调整宽度 /// </summary> /// <param name="sender"></param> public void AutoSizeComboBoxItem(object sender) {
DataRow dr4= dt.NewRow(); dr4["name"] = "time"; dr4["value"] = "4"; dt.Rows.Add(dr4);
DataRow dr5 = dt.NewRow(); dr5["name"] = "this is a max length string to test if the dropdownwith is autochange"; dr5["value"] = "5"; dt.Rows.Add(dr5); DataRow dr6 = dt.NewRow(); dr6["name"] = "date"; dr6["value"] = "6"; dt.Rows.Add(dr6); DataRow dr7= dt.NewRow(); dr7["name"] = "time and date"; dr7["value"] = "7"; dt.Rows.Add(dr7);
bool isvalida = true; DataTable dt = mdataSource.Clone(); // 循环筛选匹配的值 foreach (DataRow dr in mdataSource.Rows) {
int i = -1; i = dr["name"].ToString().IndexOf(str.ToString()); if (i > -1) {
DataRow newrow = dt.NewRow(); newrow.ItemArray = dr.ItemArray; // 构造新的数据 dt.Rows.Add(newrow); }
} dt.AcceptChanges(); BindDate(dt); //if (flag && dt.Rows.Count > 1) //{ // boBox1.Text = str; // return; //} // 当为一条数据要特殊处理/不然光标返回有问题 if (dt.Rows.Count == 1) {
// 获得光标位置 boBox1.SelectionStart = comboBox1.Text.Length; } }
// 现实鼠标 boBox1.Cursor = Cursors.Default;
} /// <summary> /// 筛选匹配的值 /// </summary> /// <param name="str"></param> private bool Fillter(string str) {
// 初始化数据 /// <summary> /// 构造数据 /// </summary> private void loaddata() {
DataTable dt = new DataTable(); dt.Columns.Add("name", typeof(string)); dt.Columns.Add("value", typeof(string)); DataRow dr0 = dt.NewRow(); dr0["name"] = string.Empty; dr0["value"] = "0"; dt.Rows.Add(dr0); DataRow dr1 = dt.NewRow(); dr1["name"] = "a"; dr1["value"] = "1"; dt.Rows.Add(dr1); DataRow dr2 = dt.NewRow(); dr2["name"] = "ab"; dr2["value"] = "2"; dt.Rows.Add(dr2); DataRow dr3= dt.NewRow(); dr3["name"] = "abc"; dr3["value"] = "3"; dt.Rows.Add(dr3);
foreach (DataRow s in dt.Rows) //Loop through list items and check size of each items.