combobox.selectedindex

合集下载

combox取值的用法c#-个人经验

combox取值的用法c#-个人经验

comboxIlist 如果绑定的是List那需要绑定实体类里的属性名comboBox1.DisplayMember User_NamecomboBox1.ValueMember User_Ide 注意手动赋值comboBox1.SelectedIndex -1的时候也会触发comboBox1_SelectedIndexChanged事件需要得到被选中的文本时用的是comboBox1.Text不是comboBox1.SelectedText //SelectedText是指被鼠标框中的文本不是选中项的文本//SelectedItem是指选中项所指向的对象如果//IList a collection.GetUser //comboBox1.DataSource a //那么SelectedItem就代表IList里的其中一项//如果toString的话就会出现“namespace.class”(这是一个名称的字符串)所以如果要获取combox中的value和值当当使用SelectedValueChanged方法时应该采用如下方法:product_catecombParentCate.SelectedItem.Cate_id 强转的类型改成你对应的实体类如果在点击某个按钮事件的时候触发,需要采用如下方法combParentCate.SelectedValue.ToString private void frmSelectProduct_Loadobject sender EventArgs e combParentCate.DataSourcedbProductCate.getAllCateDatasetForCombox combParentCate.DisplayMember cate_name combParentCate.ValueMember cate_id//combParentCate1.SelectedIndex -1 //初始化产品列表string sql select a.product_ida.cate_id a.product_name sql a.item_pricea.product_stockb.cate_name sql from product_list aproduct_cateb where a.cate_idb.cate_iddgvSelectStockList.ColumnHeadersDefaultCellStyle.Alignment DataGridViewContentAlignment.MiddleCenter dgvSelectStockList.DataSourcedbProductList.getAllProductBySqlsql private void combParentCate_SelectedValueChangedobject sender EventArgs e //combParentCate1.GetItemTextcate_id.ToString //int tmpCateIdConvert.ToInt32combParentCate1.SelectedValue.ToString string sql select a.product_ida.cate_id a.product_name sqla.item_price a.product_stockb.cate_name sql from product_list aproduct_cate b where a.cate_idb.cate_id if tmpCateId 0 sql and a.cate_id tmpCateIddgvSelectStockList.ColumnHeadersDefaultCellStyle.Alignment DataGridViewContentAlignment.MiddleCenter dgvSelectStockList.DataSourcedbProductList.getAllProductBySqlsql private voidbtnSearch_Clickobject sender EventArgs e int tmpCateId Convert.ToInt32combParentCate.SelectedValue.ToString stringsql select a.product_ida.cate_id a.product_name sql a.item_pricea.product_stockb.cate_name sql from product_list aproduct_cateb where a.cate_idb.cate_id if tmpCateId0 sql and a.cate_id tmpCateIddgvSelectStockList.ColumnHeadersDefaultCellStyle.Alignment DataGridViewContentAlignment.MiddleCenter dgvSelectStockList.DataSourcedbProductList.getAllProductBySqlsql datasetcombox 如:DataSet userDs dbSysAdminUser.getAllUserDataset combUser.DataSource userDs.Tablessys_adminuser combUser.DisplayMember user_name combUser.ValueMember user_id /// 用户名更换的时候提示权限private void combUser_SelectedValueChangedobject sender EventArgs e DataRowView tmpdrv DataRowViewcombUser.SelectedItem int tmpUserId Convert.ToInt32tmpdrv.Rowuser_id.ToString permissions_group tmpGroupIddbSysAdminUser.getSysUserByIdConvert.ToInt32tmpUserId.G roup_id lbPermission.Text tmpGroupId.Group_name。

C#读取xml中的配置信息,并加入到combobox或者其他中(winform)

C#读取xml中的配置信息,并加入到combobox或者其他中(winform)

C#读取xml中的配置信息,并加⼊到combobox或者其他中(winform)<?xml version="1.0" encoding="utf-8" ?><webSiteList><site><siteName>天涯社区</siteName><itemlist></itemlist><itemlist>综合的论坛讨论社区</itemlist></site><site><siteName>猫扑⽹</siteName><itemlist></itemlist><itemlist>国内最⼤的分栏式论坛,综合社区</itemlist><itemlist>没啥好说的了!</itemlist></site></websitelist>设combobox⾥的是猫扑⽹ 天涯社区所在的siteNameprivate void comboBox1_SelectedIndexChanged(object sender, EventArgs e){XmlDocument doc = new XmlDocument();doc.Load("c:\\aa.xml");XmlNode node = doc.SelectSingleNode("webSiteList/site[siteName='" + boBox1.Text + "']");for (int i = 0; i < node.ChildNodes.Count; i++){Console.WriteLine(node.ChildNodes[i].InnerText);}}XmlDocument doc = new XmlDocument();doc.Load(@"D:\Project\C#Test\WindowsApplication1\WindowsApplication2\XMLFile3.xml");XmlNode node = doc.SelectSingleNode("/webSiteList/site[siteName='[color=#FF0000]天涯社区'[/color]]");//combox.Textforeach (XmlNode el in node.ChildNodes){Debug.WriteLine("nodeType:" + el.NodeType);Debug.WriteLine("Text:" + el.InnerText);}以下内容为程序代码:1 - <items num="6">2 <item>album</item>3 <item>calender</item>4 <item>card</item>5 <item>notebook</item>6 <item>personulbook</item>7 <item>poster</item>8 </items>以上为xml代码以下为C#代码XmlDocument doc = new XmlDocument();doc.Load(Application.StartupPath + "\\xmldocument.xml"); //读取的xml⽂件路径XmlNodeList node = doc.GetElementsByTagName("item");for (int i = 0; i < node.Count; i++){comboBox.Items.Add(node[i].InnerText);}comboBox.SelectedIndex = 0;msdn资料XmlDocument 成员XmlNode 成员XPath 表达式的上下⽂。

Combox控件SelectChange事件

Combox控件SelectChange事件

SelectionChangeCommitted事件在设定datasource和displaymember和valuemember时,以及手动改变combobox索引和值时都不触发该事件, 只是在界面选择combobox不同值时触发。

SelectedIndexChanged事件当 SelectedIndex 属性更改时发生,索引改变时触发。

SelectedValueChanged事件当 SelectedValue 属性更改时发生,值改变时触发。

--------------------------------------------------------------------------------------------------------------------------区别:1、SelectedIndexChanged和SelectedValueChanged可以通过编程的方式更改属性而触发事件,但SelectionChangeCommitted事件必须由用户操作选定选项才能触发。

2、在初始化时(设置源)SelectedIndexChanged和SelectedValueChanged都会被调用,而SelectionChangeCommitted没有这个问题。

3、SelectionChangeCommitted也有一个小问题,当打开下拉菜单,用键盘的上下光标键选择条目后(不用鼠标点击),鼠标点击其他控件,使焦点转移,此时comboBox的Text 属性已改变,SelectedIndex属性也已改变,但这样的操作不会触发SelectionChangeCommitted事件。

结论:SelectionChangeCommitted一定要由鼠标选择才能触发(个人感觉)。

--------------------------------------------------------------------------------------------------------------------------关于事件的触发设置DataSource, DisplayMember, ValueMember不同顺序触发SelectedIndexChanged事件和SelectedValueChanged事件的次数顺序一:boBox1.DisplayMember = "userName"; (不触发)boBox1.ValueMember = "userAge"; (只触发SelectedValueChanged)boBox1.DataSource = dt; (都触发)SelectedValueChanged触发两次(总是先触发)SelectedIndexChanged,触发一次(设置DisplayMember属性时不触发两种事件)顺序二:boBox1.ValueMember = "userAge";boBox1.DisplayMember = "userName";boBox1.DataSource = dt;同上顺序三:boBox1.DataSource = dt; (都触发)boBox1.DisplayMember = "userName";(都触发)boBox1.ValueMember = "userAge";(只触发SelectedValueChanged事件)SelectedValueChanged触发三次(总是先触发)SelectedIndexChanged,触发两次(设置DisplayMember属性时不触发两种事件)顺序四:boBox1.DataSource = dt; (都触发)boBox1.ValueMember = "userAge";(都触发) 其中SelectedValueChanged触发两次boBox1.DisplayMember = "userName";(都触发)SelectedValueChanged触发四次(总是先触发)SelectedIndexChanged,触发三次(设置DisplayMember属性时不触发两种事件)说明:当设置了DataSource属性后,SelectedValue属性值会默认为第一行(所以会触发SelectedIndexChanged事件和SelectedValueChanged事件),因此,如果不希望ComboBox 自动选择第一行,还需在设置完DataSource 后自行将SelectedValue 设为“”。

一个给文件批量重命名的程序

一个给文件批量重命名的程序

一个给文件批量重命名的程序编程背景前两天下载了一些歌曲的MV文件,放在车载U盘上使用,发现车载大屏不支持分类播放,这样,我在U盘上分类存放的几类视频都按“文件名”的先后顺序罗列在播放列表里。

想听的那一类也难以区分出来。

如果手工改名实在是我这样的懒人不想干的事,于是着手编写一个程序来批量改名。

程序功能:按给定条件将一个目录内(不含子目录)的所有文件名进行更改。

目前实现的改名方式有:"将文件名前添加相同的前缀","把文件名中的指定字符替换成其它字符","删除文件名中的特定字符","保留文件名中指定长度的字符","将文件名改为指定的序列"使用的编程语言是:C#首先新建一个:Windows窗口应用程序添加如下控件为comboBox1的items属性中添加如下内容"将文件名前添加相同的前缀","把文件名中的指定字符替换成其它字符","删除文件名中的特定字符","保留文件名中指定长度的字符","将文件名改为指定的序列"为comboBox1添加SelectedValueChanged事件private void comboBox1_SelectedValueChanged(object sender, EventArgs e){int iselect = comboBox1.SelectedIndex;switch (iselect){case 0://MessageBox.Show(comboBox1.Text);将文件名前添加相同的前缀 label2.Text = "添加的前缀";label3.Visible = false;textBox3.Visible = false;break;case 1:// MessageBox.Show(comboBox1.Text );把文件名中的指定字符替换成其它字符 label2.Text = "文件名中的字符";label3.Visible = true ;textBox3.Visible = true ;label3.Text = "要替换成的字符";break;case 2://MessageBox.Show(comboBox1.Text);删除文件名中的特定字符label2.Text = "要删除的字符";label3.Visible = false;textBox3.Visible = false;break;case 3://MessageBox.Show(comboBox1.Text);保留文件名中指定长度的字符label2.Text = "要保留的长度";label3.Visible = false;textBox3.Visible = false;break;case 4:// MessageBox.Show(comboBox1.Text);将文件名改为指定的序列break;case 5:MessageBox.Show(comboBox1.Text);break;default :break;}}执行修改按钮的代码如下:private void button2_Click(object sender, EventArgs e){DirectoryInfo directory = new DirectoryInfo(textBox1.Text);var Files = directory.GetFiles(); //获取文件列表string strPrefix = "";string strNew_character = "";string strFile_name = "";string strExpanded_name = "";string strNew_Filename = "";int iselect = comboBox1.SelectedIndex;int iLenght = 0;try{strPrefix = textBox2.Text.Trim();strNew_character = textBox3.Text.Trim();if (strPrefix.Length == 0){MessageBox.Show("请输入“"+label2+"”");return;}else{if (iselect == 3 ||iselect ==4)//用正则测定输入的是否是数字{string pattern = "(^-?\\d+$)|^(-?\\d+)(\\.\\d+)?$";Regex regex = new Regex(pattern);if (!regex.IsMatch(strPrefix )){MessageBox.Show("输入的不是数字!");return;}else{iLenght = int.Parse(strPrefix);}}}//遍历文件列表foreach (var file in Files){strExpanded_name = file.Extension;//获取文件的扩展名(后缀名)strFile_name = ;switch (iselect){case 0://MessageBox.Show(comboBox1.Text);将文件名前添加相同的前缀strNew_Filename = strPrefix + strFile_name;break;case 1:// MessageBox.Show(comboBox1.Text );把文件名中的指定字符替换成其它字符strNew_Filename = strFile_name.Replace(strPrefix, strNew_character);break;case 2://MessageBox.Show(comboBox1.Text);删除文件名中的特定字符strNew_Filename = strFile_name.Replace(strPrefix,"");break;case 3://MessageBox.Show(comboBox1.Text);保留文件名中指定长度的字符strNew_Filename = strFile_name.Substring(0, iLenght);break;case 4:// MessageBox.Show(comboBox1.Text);将文件名改为指定的序列break;case 5:MessageBox.Show(comboBox1.Text);break;default:break;}file.MoveTo(textBox1.Text + "\\" + strNew_Filename);//重命名后的文件保存在原来的目录下}MessageBox.Show("批量重命名成功!");}catch (Exception ex){MessageBox.Show(ex.Message);}}退出按钮代码为:private void button3_Click(object sender, EventArgs e){this.Close();}下面是重个程序的完整代码文件“Form1.Designer.cs”namespace rename{partial class Form1{///<summary>///必需的设计器变量。

WPF中往ComboBox里添加选项并指定默认选项

WPF中往ComboBox里添加选项并指定默认选项

WPF中往ComboBox里添加选项并指定默认选项这ComboBox里可以在XAML中直接给它添加选项,这里不直接废话,下面是在你要添加的ComboBox在XAML中的实现:1<ComboBox x:Name="MyComBox"Height="20"Canvas.Left="110"Canvas.To p="255"Width="86"DisplayMemberPath="Frequ"SelectionChanged="myComboB ox_SelectionChanged">注意代码里在ComboBox属性里的DisplayMemberPath="Frequ"这个是一种绑定也是填充选项的关键,要与C#里的定义的结构体的成员名字一致。

这个事件是当你选择ComboBox 里的选项时触发的事件SelectionChanged="myComboBox_SelectionChanged"。

接着是定义结构体:1public struct Frequency2{3public int ID{get;set;}4public string Frequ{get;set;}5}里面的ID可以不设置,但很重要,当我们选择选项的时候可以用index处理我们的选择,其中关于取到选项的索引很容易但要取到选项的内容好像不太容易。

1List<Frequency>list=new List<Frequency>();2Frequency freq=new Frequency();3for(int i=0;i<lFreq.Length;i++)4{5freq.ID=i;6freq.Frequ=lFreq[i].ToString();7list.Add(freq);8}50this.MyComBox.ItemsSource=list;//这里MyComBox是我们控件的ID51this.MyComBox.SelectedIndex=0;5253//在此点之下插入创建对象所需的代码。

ComboBox控件的用法教程

ComboBox控件的用法教程

ComboBox控件的⽤法教程前⾯我们了解了ListBox(列表框)控件的使⽤,在中还有⼀个与ListBox控件⼗分相似的控件——ComboBox 控件,也叫组合框。

组合框控件包括两个部分,⼀部分是上部可以输⼊列表项的⽂本框;另⼀部分是位于⽂本框下⽅的列表框,⽤于显⽰⽤户可以从中选择的项的列表 ComboBox 控件和ListBox 控件在功能上很相似,很多情况下,这两个控件是可以互换使⽤的,但是还是有某种特定的环境下只适合使⽤⼀种控件的情况。

通常,ComboBox控件适合于建议⽤户选择控件所列举的选项、同时⼜可以让⽤户⾃⾏在⽂本框中输⼊列表中不存在的选项的情况;⽽ListBox 控件适合于限制⽤户只能选择列表中的选项的情况。

在⽤户界⾯上,因为ComboBox 控件默认情况下是存在下拉列表框的,所以⽐ListBox 控件占⽤的窗体空间少,更加适合于使⽤在存在⼤量列表项的情况下。

如下图三所⽰的是QQ修改个⼈设置的界⾯,它⼤量地合理使⽤ComboBox 控件,使得⽤户界⾯简洁且能容纳下更多的选项信息。

由此可见,ComboBox 控件的⽐ListBox 控件更加能灵活多⽤。

⼀、ComboBox 控件的常⽤属性: 1、BackColor 属性:获取或设置ComboBox 控件的背景⾊。

2、DropDownStyle 属性:获取或设置指定组合框样式的值,确定⽤户能否在⽂本部分中输⼊新值以及列表部分是否总显⽰。

它包含三个值,默认值为 DropDown,如下表所⽰:成员名称说明DropDown ⽂本部分可编辑。

⽤户必须单击箭头按钮来显⽰列表部分。

DropDownList ⽤户不能直接编辑⽂本部分。

⽤户必须单击箭头按钮来显⽰列表部分。

Simple ⽂本部分可编辑。

列表部分总可见。

3、DropDownWidth 属性:⽤于获取或设置组合框下拉部分的宽度(以像素为单位),有些列表项太长,则需要通过改变该属性来显⽰该类表项的全部⽂字,如果未设置 DropDownWidth 的值,该属性返回组合框的 Width。

C#WinForm_ComboBox数据绑定的问题

C#WinForm_ComboBox数据绑定的问题

Visual Studio C#中的数据绑定五.复杂型组件的数据绑定:在上面的介绍中,了解到对复杂型组件的数据绑定是通过设定组件的某些属性来完成数据绑定的。

首先来介绍一下ComboBox组件的数据绑定.(1).ComboBox组件的数据绑定:在得到数据集后,只有设定好ComboBox组件的的三个属性就可以完成数据绑定了,这三个属性是:、"DisplayMember"、"ValueMember"。

其中"DataSource"是要显示的数据集,"DisplayMember"是ComboBox 组件显示的字段,"ValueMember"是实际使用值。

具体如下:ComboBox1.DataSource = myDataSet ;ComboBox1.DisplayMember = "person.xm" ;ComboBox1.ValueMember = "person.xm" ;注释:此时绑定是Access 2000数据库中"person"表的"xm"字段。

由此可以得到ComboBox组件数据绑定的源程序代码(Combo01.cs),本代码操作数据库是Access 2000:public class Form1 : Form{private ComboBox ComboBox1 ;private Button button1 ;private System.Data.DataSet myDataSet ;private ponentModel.Container components = null ;public Form1 ( ){file://打开数据链接,得到数据集GetConnect ( ) ;InitializeComponent ( ) ;}file://清除程序中使用过的资源protected override void Dispose ( bool disposing ){if ( disposing ){if ( components != null ){components.Dispose ( ) ;}}base.Dispose ( disposing ) ;}private void GetConnect ( ){file://创建一个OleDbConnectionstring strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = db.mdb" ;OleDbConnection myConn = new OleDbConnection ( strCon ) ;string strCom = " SELECT * FROM person " ;file://创建一个DataSetmyDataSet = new DataSet ( ) ;myConn.Open ( ) ;file://用OleDbDataAdapter 得到一个数据集OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;file://把Dataset绑定person数据表myCommand.Fill ( myDataSet , "person" ) ;file://关闭此OleDbConnectionmyConn.Close ( ) ;}private void button1_Click ( object sender , System.EventArgs e ){ComboBox1.DataSource = myDataSet ;ComboBox1.DisplayMember = "person.xm" ;ComboBox1.ValueMember = "person.xm" ;}static void Main ( ){Application.Run ( new Form1 ( ) ) ;}}图03:对ComboBox组件数据绑定的程序界面得到了ComboBox组件对本地数据库的数据绑定程序,也就十分方便的得到ComboBox组件绑定Sql Server 2000源程序代码(Combox02.cs)具体如下:public class Form1 : Form{private ComboBox ComboBox1 ;private Button button1 ;private System.Data.DataSet myDataSet ;private ponentModel.Container components = null ;public Form1 ( ){file://打开数据链接,得到数据集GetConnect ( ) ;InitializeComponent ( ) ;}file://清除程序中使用过的资源protected override void Dispose ( bool disposing ){if ( disposing ){if ( components != null ){components.Dispose ( ) ;}}base.Dispose ( disposing ) ;}private void GetConnect ( ){// 设定数据连接字符串,此字符串的意思是打开Sql server数据库,服务器名称为server1,数据库为data1 string strCon = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 " ;OleDbConnection myConn = new OleDbConnection ( strCon ) ;myConn.Open ( ) ;string strCom = " SELECT * FROM person " ;file://创建一个DataSetmyDataSet = new DataSet ( ) ;file://用OleDbDataAdapter 得到一个数据集OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;file://把Dataset绑定person数据表myCommand.Fill ( myDataSet , " person " ) ;file://关闭此OleDbConnectionmyConn.Close ( ) ;}private void button1_Click ( object sender , System.EventArgs e ){ComboBox1.DataSource = myDataSet ;ComboBox1.DisplayMember = "person.xm" ;ComboBox1.ValueMember = "person.xm" ;}static void Main ( ){Application.Run ( new Form1 ( ) ) ;}}C# WinForm 中ComboBox数据绑定的问题2009-12-29 09:24怎样让WinForm中的ComboBox显示表中的一个字段,同时又绑定另一个字段?在Web中的ComboBox这样写可以绑定两个值:boBox1.DataTextField="B000602";//显示中文,方便用户选择boBox1.DataValueField="B000601";//绑定与选择对应的另一个值boBox1.DataBind();但是在WinForm程序中该怎么写啊?0******************************************************************DataSet ds = new DataSet();//这个DataSet是你从数据库里取出来的值string[] arr = new string[ds.Tables[0].Rows.Count];for (int i = 0; i < arr.Length; i++){arr[i] = ds.Tables[0].Rows[i][2].ToString();}textBox1.AutoCompleteCustomSource.AddRange(arr);textBox1.AutoCompleteSource =AutoCompleteSource.CustomSource;textBox1.AutoCompleteMode =AutoCompleteMode.SuggestAppend;1.******************************************************************* 假设combobox绑定的列表为DataSet2的ListTable表(含有ListID, ListName字段),需要绑定的记录字段为DataSet1的Table1表的ListID字段combobox.DataSource = dataset2.Tables["ListTable"]; combobox.DisplayMember = "ListName";combobox.ValueMember = "ListID";combobox.DataBindings.Add("SelectedValue", dataset1, "Table1.List ID");2.***************************************************************** //dt为数据表,ID,Name为dt的两个字段:comboBox1.DataSource = dt ;comboBox1.ValueMember ="ID";comboBox1.DisplayMember ="Name";3.******************************************************************SqlConnection con = new SqlConnection("server=192.168.2.198;uid=sa;pwd=sa;database=northwind"); SqlCommand cmd = con.CreateCommand();mandText = "Select * from Customers where countr y='USA'";SqlDataAdapter adp = new SqlDataAdapter();adp.SelectCommand = cmd;DataSet ds = new DataSet();adp.Fill(ds, "Customers");comboBox1.DataSource = ds.Tables["Customers"];comboBox1.DisplayMember = "CompanyName";comboBox1.ValueMember = "CompanyName";++++++++++++++++或者++++++++++++++++++++++SqlConnection con = new SqlConnection("server=192.168.2.198;uid=sa;pwd=sa;database=northwind"); SqlCommand cmd = con.CreateCommand();mandText = "Select * from Customers where countr y='USA'";SqlDataAdapter adp = new SqlDataAdapter();adp.SelectCommand = cmd;DataSet ds = new DataSet();adp.Fill(ds, "Customers");comboBox1.DataSource = ds;comboBox1.DisplayMember = "panyName";comboBox1.ValueMember = "panyName";++++++++++++往DataGrid里添加下拉列表++++++++++++ DataGridTableStyle dgt = new DataGridTableStyle();dgt.MappingName = "test";DataGridTextBoxColumn dgtbc = new DataGridTextBoxColumn(); dgtbc.MappingName = "name";dgtbc.HeaderText= "name";ComboBox cmbFunctionArea = new ComboBox(); cmbFunctionArea.DataSource = DtGeneral;cmbFunctionArea.DisplayMember = "name"; cmbFunctionArea.ValueMember = "value";cmbFunctionArea.Cursor = Cursors.Arrow;cmbFunctionArea.DropDownStyle= ComboBoxStyle.DropDownList;cmbFunctionArea.Dock = DockStyle.Fill;dgtbc.TextBox.Controls.Add(cmbFunctionArea);dgt.GridColumnStyles.Add(dgtbc);cmbFunctionArea.SelectionChangeCommitted +=new EventHandler(cmbFunctionArea_SelectionChangeCommitted);+++++++++++++修改++++++++++++++++private void cmbFunctionArea_SelectionChangeCommitted(object se nder, EventArgs e){((DataTable)dataGrid1.DataSource).Rows[dataGrid1.CurrentRowIndex][0] = ((ComboBox)sender).Text.ToString();dataGrid1.SetDataBinding(DtGeneral,null);}4.******************************************************************* *****DataBindings是一般控件所具有的,是绑定数据源的某一个字段combobox.DataBindings.Add("要绑定控件的属性如下拉框的SelectedValue\Text", 数据源如dataset1, "导航路径如Table1.ListID");但是,DataBindings只能绑定一个字段,而绑定多个字段时典型的如列表控件Combobox、ListBox控件,需要键值对,这时就需要指定DataSource(实现IList接口就行),然后指定ValueMember、DisplayMember 。

C#WinformComboBox在输入内容时会在下拉菜单中显示根据输入内容查询的结果

C#WinformComboBox在输入内容时会在下拉菜单中显示根据输入内容查询的结果

C# Winform ComboBox 在输入内容时 会在下拉菜单中显示根据输入内容查询的结果将 ComboBox 的 AutoCompleteMode 属性置为SuggestAppend , AutoCompleteSource 属性置为 ListItems ,然 后给 ComboBox 随便塞几个子项,运行看效果。

扩展:AutoCompleteMode 允许有四种值 :Suggest 在ComboBox 中输入字符后, ComboBox 会自动展开,显示匹配的子项,输入行不受影响,需要自己输入后续 字符,或者在下拉框中点选完整子项。

App end:输入字符后,字符后会自动补充匹配内容 示),但是 ComboBox 不会展开。

按上下键可以在多个匹配内 容中切换。

SuggestA pp end:上述两种模式的组合。

AutoCompleteSource 属性,共有 9 种,指示自动完成将要在 其中进行查找的数据源。

常用的几种如下 :ListItems: 数据源为 ComboBox 的 Item 集合。

FileSystem: 文件系统。

例如输入 后会展开 下的目录列表(或 append 模式下的自动添加 )。

同样的,此数据源也支持文 件名的补全。

None:默认值,指示ComboBox 不使用自动功能。

(以反色显Customsource:自定义数据源。

选用此方式时必须在代码中指 定 ComboBox 的 AutoCompleteCustomSource 属性为你构建的 AutoCompletestringCollection 对象,否则不会生效。

AutoCompleteStringCollection 类似于 List ,将你的数据 add 进去即可。

[ 高质量编程 ]团队成员为您解答,请提出宝贵意见和建议。

谢谢!QQ:176229432补充回答 :首先我需要强调一点,使用拼音首字母检索时可能比较适合DropDownStyle=DropDownList 时。

关于comboBox控件的SelectedValue属性

关于comboBox控件的SelectedValue属性

关于comboBox控件的SelectedValue属性
ComboBox控件的SelectedValue属性表示控件的当前选择项的值。

具体来说,当用户从ComboBox控件中选择某一项,SelectedValue属性便会代表该选择项的值,而不再只是显示文本。

该属性允许程序员访问来自用户的输入,从而可以让程序更加精确地响应用户的操作。

ComboBox控件的SelectedValue属性可以使用DataSource属性将数据源绑定到该控件,DataSource中的每一条记录都必须有一个与SelectedValue属性对应的值,这样当用户选择某一条记录时,SelectedValue属性便会被自动赋值为所选记录的值。

此外,程序员也可以直接对SelectedValue属性进行赋值,这样更加有效地为ComboBox控件设置默认选择值。

总之,ComboBox控件的SelectedValue属性在实现交互式的用户界面时起着重要的作用,能够使程序更好地响应用户的操作,同时也能为用户提供更多的便利性。

JComboBox

JComboBox

JComboBox(选择框)组件JComboBox组件实现一个选择框,用户可以从下拉列表中选择相应的值,该选择框还可以设置为可编辑,当设置为可编辑状态时,用户可以在选择框中输入相应的值。

JComboBox 类提供的常用构造方法如表1所示。

表1 JComboBox类的常用构造方法在创建选择框时,可以通过构造函数直接指定该选择框包含的选项,例如下面的代码,将创建一个包含选项“男”和“女”的选择框:String[] sexs = { "男", "女" };JComboBox sexComboBox = new JComboBox(sexs);也可以通过方法addItem()或insertItemAt()向选择框中添加选项,以及通过方法setSelected Item()或setSelectedIndex()设置选择框的默认选项,还可以通过方法setEditable()将选择框设置为可编辑的,即选择框可以接受用户输入的信息。

JComboBox类提供的常用构造方法如表2所示。

表2 JComboBox类的常用方法可以通过A ctionListener侦听器或ItemListener侦听器捕获选择框被修改的事件,它们的区别是ActionListener侦听器只能捕获到一次ActionEvent事件,不过当选择框的选项为“硕士”时,如果重新选中选项列表中的“硕士”选项,ActionListener侦听器依然会捕获到一次ActionEvent事件,而ItemListener侦听器只捕获选择框真正被修改的ItemEvent事件。

但是ItemListener侦听器将捕获到两次ItemEvent事件,第一次为被修改的选项触发的,第二次是新选中的选项触发的。

在利用ItemListener侦听器捕获选择框被修改的事件时,可以通过ItemEvent事件的对象,获得触发此次事件的相关信息,例如通过getItem()方法获得选项内容;通过getStateChange()方法获得选项状态,如果是由被修改的选项触发的,则返回2,此时与静态常量DESELECTED的值相等;如果是由新选中的选项触发的,则返回1,此时与静态常量SELECTED的值相等。

ComboBox 使用方法

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)。

组合框(COMBOBOX)

组合框(COMBOBOX)

4.7 组合框(ComboBox)图4-10 组合框的三种形式组合框(ComboBox)是由文本框和列表框组合而成的控件。

组合框有三种形式:下拉式组合框、简单组合框和下拉式列表框。

(如图4-10所示)三种形式都能在列表中选择项目,所选项目会显示在文本框中。

“下拉式组合框”和“简单组合框”还可以通过在文本框中输入文本来进行选择。

“下拉式组合框”和“下拉式列表框”均具有能“下拉”和“收起”的列表,可节省空间。

通过Style属性可选择所需的形式。

4.7.1 属性与方法(1)Style属性决定组合框的类型和行为,可选值为0、1、2,默认值为0。

(a)0 – Dropdown Combo(下拉式组合框):正常状态仅显示文本框和下拉按钮;当单击下拉按钮时,会显示列表框供用户选择;再次单击下拉按钮,列表框隐藏,恢复正常状态。

用户可以通过列表框选择项目,也可以在文本框中输入项目文本来进行选择,所选项目会显示在文本框中。

此形式允许用户键入列表框中没有的选项。

(b)1 – Simple Combo(简单组合框):文本框与列表框一起显示,文本框右侧无下拉按钮,列表框固定显示,不能被“拉下”和“收起”。

对项目的选择与下拉式组合框相同。

在设计时,应适当调整组合框的大小,否则执行时有些列表项可能不被显示。

当选项数超过可显示的限度时将自动插入一个垂直滚动条。

(c)2 - Dropdown ListBox(下拉式列表框):外观同下拉式组合框一样,有下拉按钮以及可供“拉下”和“收起”列表框。

与下拉式组合框的有所不同的是,用户不能在列表框中输入选项,而只能在列表中选择。

(2)其他属性与方法组合框的大部分属性和方法与列表框相同,比如要访问控件的项目,可以用List数组;控件的当前选项由控件的Text属性确定;AddItem方法将项目加人到组合框的项目列表中;RemoveItem 方法将组合框中选定的项目删除;Sorted属性决定组合框中的项目是否排序等。

C#中combobox控件属性、事件、方法

C#中combobox控件属性、事件、方法

C#中combobox控件属性、事件、⽅法/baggio7095586/article/details/6150075⼀、combobox 属性、事件、⽅法公共属性名称说明AccessibilityObject获取分配给该控件的 AccessibleObject。

AccessibleDefaultActionDescription获取或设置控件的默认操作说明,供辅助功能客户端应⽤程序使⽤。

AccessibleDescription获取或设置辅助功能客户端应⽤程序使⽤的控件说明。

AccessibleName获取或设置辅助功能客户端应⽤程序所使⽤的控件名称。

AccessibleRole获取或设置控件的辅助性⾓⾊AllowDrop获取或设置⼀个值,该值指⽰控件是否可以接受⽤户拖放到它上⾯的数据。

Anchor获取或设置控件绑定到的容器的边缘并确定控件如何随其⽗级⼀起调整⼤⼩。

AutoCompleteCustomSource获取或设置在 AutoCompleteSource 属性设置为 CustomSource 时使⽤的⾃定义 System.Collections.Specialized.StringCollection AutoCompleteMode获取或设置控制⾃动完成如何作⽤于 ComboBox 的选项。

AutoCompleteSource获取或设置⼀个值,该值指定⽤于⾃动完成的完整字符串源。

AutoScrollOffset获取或设置⼀个值,该值指⽰在 ScrollControlIntoView 中将控件滚动到何处。

BindingContext获取或设置控件的 BindingContext。

Bottom获取控件下边缘与其容器的⼯作区上边缘之间的距离(以像素为单位)。

Bounds获取或设置控件(包括其⾮⼯作区元素)相对于其⽗控件的⼤⼩和位置(以像素为单位)。

CanFocus获取⼀个值,该值指⽰控件是否可以接收焦点。

ComboBox有几个不同的属性用来获取当前选取的选项

ComboBox有几个不同的属性用来获取当前选取的选项

ComboBox有几个不同的属性用来获取当前选取的选项:ComboBox1.Text、ComboBox1.SelectedIndex、ComboBox1.SelectedItem、ComboBox1.SelectedText、ComboBox1.SelectedV alue 。

SelectedIndex获取的是选中项的索引,从0开始;SelectedItem获取的是选中项本身,这里返回的Object类型的一个对象,不一定是选中项的文本。

比如现在我们将ComboBox绑定到一个DataReader上,如果我们使用SelectedItem.ToString()的话,返回的是:System.Data.DataRowV iew,这表明返回的是一个System.Data.DataRowV iew的对象,然后转换为Object返回。

SelectedV alue获取或设置由V alueMember 属性指定的成员属性的值(MSDN)。

即是说要绑定了数据源之后才能使用这个属性。

SelectedText获取或设置ComboBox 的可编辑部分中选定的文本(MSDN)。

为了测试这个属性,我们使用一个click进行测试,返回的是一个空字符串,关于这个原因,MSDN 的解释是:當下拉式方塊失去焦點時,選取範圍點就會移至文字的開頭,而任何原本選取的文字就會變成未選取狀態。

在這個範例中,取得SelectedText 屬性就會擷取空字串,而設定SelectedText 屬性就會將指定的值加入至文字的開頭。

(/zh-cn/library/bobox.selectedtext(zh-tw). aspx)。

再用SelectedIndexChanged事件进行测试,结果还是空字符串,原因是:當使用者選取下拉式清單中的項目,或使用向上鍵和向下鍵,就會自動選取新項目的文字。

但是,當您嘗試取得SelectedIndexChanged 或SelectedV alueChanged 事件處理常式中的SelectedText 值時,這個屬性會傳回一個空字串。

VBnet 检测插入U盘的信息

VBnet 检测插入U盘的信息

2012-12-20[键入文档标题]本教程主要为了实现下图所示效果:即在ComboBox中显示插入的U盘的信息,当然,你也可以稍微修改一下代码,让这些信息显示在TextBox、Label或其他你想要的控件上!废话不说,现在开始吧!一、首先,新建项目,选择“Windows窗体应用程序”,名称自己命名即可,本例命名为LUCCFU,点击确定!二、出现“Form1”窗体,在窗体上添加Label1、ComBox1,再添加Timer1,修改Label1的Text属性为“请选择您的U盘:”三、点击菜单“项目”下的“添加模块…”,选择“模块”,本例名称命名为“GetUinfo.vb”,点击添加四、自动弹出“GetUinfo.vb”代码编辑界面,在自动生成的代码上面,即"Module GetUinfo“语句上面,添加以下三行代码以引入"命名空间"。

=================================================================================Imports VB = Microsoft.VisualBasicImports Microsoft.Win32Imports System.IO=================================================================================五、"Module GetUinfo”语句下面,就是本教程的重中之重了,总体来说,是3个主要函数,如下:➢Delblank函数➢Cutstring函数➢Getustring函数其中Getustring为核心,用来获得u盘信息,Delblank函数和Cutstring函数主要是辅助Getustring,因为Getustring函数中间获取到得U盘信息是比较乱的,通过Delblank函数和Cutstring函数可以使获得U盘信息更完美,下面来看!1、在"Module GetUinfo”语句下面,首先声明两个string类型的字符串一维数组,再声明一些其他变量,如下:=================================================================================Public uinfoarray(22) As StringPublic uinfoarray1(22) As StringPublic udisknum As Short = 0Public udisknum1 As Short = 0Public intX As Short=================================================================================2、接着输入下面代码,即Delblank函数:=================================================================================Public Function Delblank(ByVal strname As String) As StringDim str10 As Stringstr10 = VB.Replace(strname, Chr(32), "")str10 = VB.Replace(str10, ",,,,,", ",")str10 = VB.Replace(str10, ",,,,", ",")str10 = VB.Replace(str10, ",,,", ",")str10 = VB.Replace(str10, ",,", ",")Return str10End Function=================================================================================可以看到,Delblank函数,有一个string类型的参数,返回值也为string类型,该函数的主要作用是删除参数字符串中'的“空格”和将连续多个汉语逗号“,”删除,在这里也许你不明白它的作用,Getustring函数会用到!3、紧接着输入以下代码,即Cutstring函数:=================================================================================Public Function Cutstring(ByVal strname As String, ByVal firststring As String, ByVal secondstring As String) As String Dim stringlen As IntegerDim cutlen As IntegerDim n As IntegerIf firststring <> ""Thenstringlen = VB.Len(strname)cutlen = VB.Len(firststring)If cutlen <= stringlen ThenFor n = cutlen To stringlenIf VB.Right(VB.Left(strname, n), cutlen) = firststring ThenExit ForEnd IfNextIf n = stringlen And VB.Right(VB.Left(strname, n), cutlen) <> firststring Thenstrname = ""Elsestrname = VB.Right(strname, stringlen - n)End IfElsestrname = ""End IfEnd IfIf strname <> ""And secondstring <> ""Thenstringlen = VB.Len(strname)cutlen = VB.Len(secondstring)If cutlen <= stringlen ThenFor n = cutlen To stringlenIf VB.Left(VB.Right(strname, n), cutlen) = secondstring ThenExit ForEnd IfNextIf n = stringlen And VB.Left(VB.Right(strname, n), cutlen) <> secondstring Thenstrname = ""Elsestrname = VB.Left(strname, stringlen - n)End IfElsestrname = ""End IfEnd IfReturn strnameEnd Function=================================================================================可以看出,这个函数有3个string类型的参数,作用是对参数strname字符串进行截取,截取第二个参数firststring和第三个secondstring 中间的字符串,函数结果返回截取出的字符串,例如:Cutstring("abc123cde4f5","ab","4f5")则返回c123cdefe。

ComboBoxEdit?方法与属性设置

ComboBoxEdit?方法与属性设置

ComboBoxEdit 方法与属性设置1:读取ComboBoxEdit选中值的方法comboBoxEdit1.Properties.Items[comboBoxEdit1.SelectedIn dex].ToString()使用前需要先确认comboBoxEdit1.SelectedIndex不能等于-1,不然报错。

2 :ComboBoxEdit也是DevExpress winform控件中经常使用的一个,我们在使用的过程中可能有时需要对ComboBoxEdit控件进行数据绑定,而ComboBoxEdit控件不像LookUpEdit控件拥有DataSource属性,可以直接绑定一个数据集。

下面我们使用ComboBoxEdit的comboBoxEdit1.Properties.Items.Add(object item)方法来实现数据绑定.1.先用GetAreaDataTable方法返回一个DataTable,代码如下:public static DataT able GetAreaDataT able(){string sqlStr = "select BMMC from usiCLB where BMLID=3";DataBase db = new DataBase();DataTable dt = db.GetDataTable(sqlStr);return dt;}2.然后将数据循环添加到ComboBoxEdit中,代码如下:private void LoadComboBoxEdit(){boBoxEdit1.Properties.NullText = "请选择...";DataTable dt = UserInfo.GetAreaDataTable();for (int i = 0; i < dt.Rows.Count; i++){comboBoxEdit1.Properties.Items.Add(dt.Rows[i]["BMMC"].T oString());}}3:ComboBoxEdit只可输入不可编辑属性设置boBoxEdit1.Properties.TextEditStyle=DevExpress.Xtr aEditors.Controls.T extEditStyles.DisableTextEditor;4:ComboBoxEdit是否排序后显示boBoxEdit1.Properties.Sorted = false;。

WPF基于ComboBox实现(花里胡哨)搜索功能与占位符提示

WPF基于ComboBox实现(花里胡哨)搜索功能与占位符提示

WPF基于ComboBox实现(花里胡哨)搜索功能与占位符提示目标首先,网上还有很多更高级的方式来实现题目中描述的功能,比如自定义样式,自定义控件(应该叫那个)。

在这里,我只记录我的个人经历。

毕竟花了很长时间才明白其中的一些原理。

一、实现搜索功能ComboBox本身已经具备搜索功能,只需要将其IsEditable和IsTextSearchEnable开关打开就可以了。

但是这个搜索功能是比较简单的,它能够帮你定位到第一个(如果有的话)匹配项。

我想实现的是根据搜索文字更新列表内容,理由是这样更加酷炫。

下面是实现方法(和一些坑)。

1. ComboBox定义首先!我们需要关闭IsTextSearchEnable,理由是:它不仅帮我们定位匹配项,同时还会将SelectedItem也设置成这一项,这样会给我们的代码带来逻辑混乱。

具体解释如下:从属性角度来看,ComboBox的SelectedIndex,SelectedItem和Text的更新顺序是从前往后的,搜索逻辑本来应该是基于Text去更新源,但是更新源的操作会导致Selected的更新,进而再次引起Text更新,那么逻辑就会变得未知且不可控(甚至程序行为会出现有断点和没断点时两个样的情况)从事件的角度来说,我观察到很奇怪的一点,即控件内部由Selected引起的更新优先级是高于用户的输入行为的,假如说我输入“六”,代码自动选中“六六六”这一项并开始更新Text以及其他属性,等到这些更新都完成了,用户输入的“六”才会开始去更新Text(甚至会更新多次),最终导致界面显示的和代码选中的内容不一致,而且由于逻辑上的混乱,很难在这个情况下去解决不一致的问题。

我们所用到的ComboBox大概长这样:<ComboBox ItemsSource="{Binding FilterItems}"Text="{Binding SearchText}"IsEditable="True"IsTextSearchEnable="False"/>基于这个定义,我们将搜索逻辑放到searchText的set方法中实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ComboBox.SelectedIndex的使用问题
1、任何时候,SelectedIndex变化都触发SelectedIndexChanged事件。

2.1、重新生成列表(先清空再添加)时:ComboBox显示空,但SelectedIndex保持不变。

2.2、重新绑定列表(ResetBinding)时:ComboBox会努力保持SelectedIndex不变;当SelectedIndex小于等于新列表的最大下标时,CombBox会显示新列表相应位置的项;但当SelectedIndex大于列表的最大下标时,ComboBox会先将SelectedIndex置为新列表的最大下标,然后再重新绑定列表,ComboBox显示新列表中新SelectedIndex处的值。

但千万不要以在这种情况下,SelectedIndexChanged 中就能获得与界面一致的值,因为ComboBox在绑定新列表之前重置SelectedIndex 的值,因此,你在SelectedIndexChanged中获得的只是旧列表的值。

3、在初次将列表绑定到数据源时:ComboBox会显示列表中第一个选项,但SelectedIndex仍然是-1。

由于SelectedIndex的以上特性,若ComboBox使用绑定列表并且列表会变化,则在使用SelectedIndexChanged事件实时将ComboBox的显示项映射到内部数据时,必须加以小心。

否则将极有可能内部数据与界面显示数据不一致。

我还尝试过使用SelectedValueChanged事件来代替SelectedIndexChanged事件,但是发现SelectedValueChanged事件与SelectedIndexChanged的唯一区别在于:当使用ComboBox列表绑定,用户尚未进行过选择操作时,SelectedValueChanged 会在ComboBox的显示值变化时被触发。

只要用户执行过选择操作,该事件就再也不会被触发。

猜测SelectedValueChanged应该只在SelectedIndex为-1的时候才有可能被触发。

最终,我还是只好老老实实的用SelectedIndexChanged。

为避免出现问题,建议:若要对ComboBox的列表使用绑定,则在初次绑定和重新绑定后,重置SelectedIndex为-1,然后将其置为一个默认值,或尝试将SelectedItem置为旧列表中的选中项。

测试证明SelectedItem设置成功时并且该项在新旧列表中位置不同时,SelectedIndexChanged会被触发。

注:2.1,2.2均指列表改变时的特征,2.2为使用数据绑定列表时的情况。

相关文档
最新文档