单位如何建设网站,大学生作业做网站,网站建设 采集,清爽网站无论是QT还是VC#xff0c;这些可视化编程的工具#xff0c;掌握好控件的用法是第一步#xff0c;C#的控件也不例外#xff0c;尤其这些常用的控件。常见控件中较难的往往是这些与数据源打交道的#xff0c;比如CombBox、ListBox、ListView、TreeView、DataGridView. 文章…无论是QT还是VC这些可视化编程的工具掌握好控件的用法是第一步C#的控件也不例外尤其这些常用的控件。常见控件中较难的往往是这些与数据源打交道的比如CombBox、ListBox、ListView、TreeView、DataGridView.
文章目录一、添加数据1、常规添加(1)字符串添加(2)利用数组添加(3)利用类添加2、指定数据源添加(1)List结合自定义类做数据源(2)利用字典做数据源(3)利用DataTable做数据源3、添加多个数据源二、获取数据1、SelectedIndex2、SelectedValue3、SelectedItem4、显示默认值三、调整样式1、对齐方式2、文字颜色3、背景颜色3、尺寸高宽的设置3、禁止选择目前无法办到只能变通实现4、显示背景图四、自定义自己的combbox1、多选下拉框2、多列下拉框文章出处
https://haigear.blog.csdn.net/article/details/128770359这篇博文我们来详细了解一下Combbox的用法毕竟只要你做项目这个控件就比不可少。一、添加数据
1、常规添加
(1)字符串添加
对于初学者所了解的所以为的所常用的恐怕就是为combbox添加字符串的items形如下面这种。简单但粗暴机械而低效但更容易有成就感一试就成。
ComboBox comboxcellnew ComboBox();comboxcell.Items.Add(气);comboxcell.Items.Add(血);comboxcell.Items.Add(筋);comboxcell.Items.Add(骨);comboxcell.Items.Add(阴);comboxcell.Items.Add(阳);comboxcell.Items.Add(痰);comboxcell.Items.Add(湿);(2)利用数组添加
一个个添加有点效率低下来一个字符串数组老老实实传一个数组进去
comboxcell.Items.AddRange(new string[]{虚, 实,表,里, 寒,热});如果是在DataGridView中的DataGridViewComboBoxCell还可以更简单因为DataGridViewComboBoxCell的AddRange有两个重载其中一个采用了params object[]的参数的重载也就是说可以可变数量的参数。 DataGridViewComboBoxCell comboxcell new DataGridViewComboBoxCell();comboxcell.Items.AddRange(虚, 实, 表, 里, 寒, 热);他们两种combbox的addrange实现不同这是微软的为题没有做统一希望它在下一个版本也给Combbox的addrange增加一个params object[]重载。
(3)利用类添加
上面的添加都一个缺点那就是只是添加了显示值当我们需要键值对应的时候就不能满足需求。我们设计一个简单的类只包含键和值即可 public class Creature{public int cid { get; set; }public string cname { get; set; }} 显示的是文字背后是值与显示文字对应选择一个文字对应一个值
ComboBox comboxcellnew ComboBox();
comboxcell1.Items.Add(new Creature { cid 2, cname dog });
comboxcell1.Items.Add(new Creature { cid 3, cname cat });
comboxcell1.Items.Add(new Creature { cid 4, cname bird });
comboxcell1.Items.Add(new Creature { cid 5, cname human });
comboxcell1.ValueMember cid;
comboxcell1.DisplayMembercname;这里必须注意一定要设置ValueMember 和DisplayMember否则我们点击下拉框得到的就是这般模样 特别注意 像上面这样comboBox.Add(自定义对象非IList类)给comboBox添加item后再分别制定其DisplayMember和ValueMember使用SelectedValue得不到cid,得到null是如果想得到cid必须强制转换comboBox. SelectedItem 为自定义类后才可以取得cid。 SelectedValue只对通过combBox.DataSource来指定的combBox的数据源(IList自定义对象类型或者DataTable)有效也就是说这个时候 SelectedValue才有值
如果我们要用到类又要用SelectedValue和SelectedText属性得到你想要的属性值那我们就只有一条路第一就是让你的类去继承IList接口。 其实你也可以不去实现IList接口接续看下面的章节自由答案。 “欲练此功挥刀自宫其实也不必自宫”
2、指定数据源添加
其实数据源可以是任何实现了IList接口的类如List、Dictionary甚至DataTable
(1)List结合自定义类做数据源
我们知道List是实现了IList接口的所以我们可以用来作为数据源而且他还可以让我们自定义的类通过List轻松实现IList接口的效果看看下面的代码 ListCreature list new ListCreature();list.Add(new Creature { cid 22, cname dog });list.Add(new Creature { cid 24, cname bird });list.Add(new Creature { cid 105, cname human });comboxcell1.DataSourcenew BindingSource { DataSource list };comboxcell1.ValueMember cid;comboxcell1.DisplayMember cname;(2)利用字典做数据源
字典类相比自定义类结合List更简练只有键值对没有也不需要多余的信息。 Dictionaryint,string list1 new Dictionaryint,string();list1.Add(213, dog);list1.Add(523, cat);comboxcell1.DataSourcenew BindingSource { DataSource list1 };comboxcell1.ValueMember Key;comboxcell1.DisplayMember Value;(3)利用DataTable做数据源
DataTable也可以作为combbox的数据源但个人感觉还是有些杀鸡用牛刀了。反正只能用上两个列一列做值一列做键而已。 DataTable dt new DataTable();dt.Columns.Add(id, typeof(System.Int32));dt.Columns.Add(name, typeof(System.String));dt.Columns.Add(col3, typeof(System.String));dt.Columns.Add(col4, typeof(System.String));dt.Columns.Add(col5, typeof(System.String));dt.Columns.Add(col6, typeof(System.String));for (int i 0; i 10; i){dt.Rows.Add(dt.NewRow());dt.Rows[i][0] i 123;for (int j 1; j 6; j)dt.Rows[i][j] item j.ToString() i.ToString();}comboxcell1.DataSource dt;comboxcell1.ValueMember id;comboxcell1.DisplayMember name;很显然这里我们除了第一列和第二列用到了其余的都“浪费了”当然我们可以通过SelectedItem获取其余的信息这在一些复杂的应用中还是很有好处的。
3、添加多个数据源
http://soft.zhiding.cn/software_zone/2008/0718/995129.shtml
二、获取数据
1、SelectedIndex
2、SelectedValue
3、SelectedItem
需要注意 SelectedItem在webform中有两个属性SelectedItem.Value和SelectedItem.Text但在winform中是没有的如果想获得这两个属性只能通过强制转换SelectedItem为对应的对象类后通过类属性得到。
4、显示默认值
设定显示默认值不是系统默认的第一项而是根据显示的文字或者值
comboBox1.SelectedIndex comboBox1.Items.IndexOf(默认值);三、调整样式
https://blog.csdn.net/weixin_44777515/article/details/88893090 可以在属性栏中设置的属性我这里不赘述重点讲需要通过代码实现的。
1、对齐方式
2、文字颜色
对特殊的项目更换颜色起到提示作用也是我们常常有的需求。比如itemValue小于某个值的时候显示红色或者灰色。
3、背景颜色 3、尺寸高宽的设置 3、禁止选择目前无法办到只能变通实现
目前想到的方法就是在itemdraw中强制不让他绘制出来改绘制为其他文字比如禁止选择
4、显示背景图
四、自定义自己的combbox
自己定义combobox的好处就是能够根据自己的需求来设计坏处就是要多写几行代码多实现几个基类的方法和属性。下面我们建立一个自定义控件用户组件名称定义为ExComboBox
1、多选下拉框
2、多列下拉框
还在更新之中请继续关注 转载请注明出处码字不易https://haigear.blog.csdn.net/article/details/128770359
https://blog.csdn.net/weixin_44777515/article/details/88893090