ComboBox 如何动态赋值 C#
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ComboBox 如何动态赋值 C#相关的知识,希望对你有一定的参考价值。
int []nums1 = new int[] 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 ;
cbxNums.DataSource=nums1;//不行
循环赋值也不行,是什么问题啊
for(int i =0;i<nums1.Length;i++)
cbxNums.Items.Add(i);//不行
控制允许动态赋值的属性是什么呢?
2、添加选项【数据库数据源】:比如从数据库中绑定到combobox1的数据源,其中ds是从数据库中查询得到的数据集,ds.Tables[0]是数据集中的数据表0
DataRow dr = ds.Tables[0].NewRow();
dr[0] = DBNull.Value;
dr[1] = DBNull.Value;
dr[2] = DBNull.Value;
dr[3] = DBNull.Value;
dr[4] = DBNull.Value;
dr[5] = DBNull.Value;
dr[6] = DBNull.Value;
dr[7] = DBNull.Value;
dr[8] = DBNull.Value;
dr[9] = DBNull.Value;
ds.Tables[0].Rows.InsertAt(dr, 0);
this.comboBox1.DataSource = ds.Tables[0];//绑定数据源
this.comboBox1.DisplayMember = "日期";//显示给用户的数据集表项
this.comboBox1.ValueMember = "次数";//操作时获取的值
//在数据集中对应列作为combobox的值
3、添加选项【普通数据源】:
Province p1 = new Province("01", "山西");//Province为自定义类型
comboBox1.Items.Add(p1);
comboBox1.Items.Add(new Province("02", "山东"));
comboBox1.Items.Add(new Province("03", "广东"));
comboBox1.Items.Add(new Province("04", "广西")); 参考技术A Combox 允许动态赋值的意思是动态的绑定数据,所以你上面cbxNums.DataSource=nums1这一句其实已经为Combox绑定了数据源了,只是说你没有将它的值显示出来而已,Combox绑定数据源后最重要的两个属性就是displaymember和valuemember,所以可以将代码修改为:
cbxNums.DataSource=nums1;
cbxNums.displaymember="要绑定的值1";//这个值将显示出来
cbxNums.valuemember="要绑定的值2";//这个绑定的值是value值,值1和值2可以一样
基本上就这些吧 不能解决的hi我本回答被提问者和网友采纳 参考技术B for(int i =0;i<nums1.Length;i++)
cbxNums.Items.Add(nums1[i].ToString());
不会百度HI我
C#中ComboBox动态绑定赋值
http://www.crifan.com/csharp_combobox_data_dynamic_binding/
C#中,已有一个List,想要动态的,绑定到ComboBox中。
【解决过程】
1.参考:
c# winform comboBox动态绑定数据
去试试代码:
cmbSubCategory.DataSource = generalCategoryList;
cmbSubCategory.DisplayMember = "name";
cmbSubCategory.ValueMember = "url";
结果是可以执行,但是点击combobox时,下来菜单是空的。
2.参考:
C# Binding Generic LIst<string> to Combo Box
打算去试试。
3.经过后来的折腾,找到原因了:
【已搞懂】C#中代码加了断点,但是调试时却无法执行到
4.然后此处,实际上是,之前的写法,就是正常的:
public struct categoryItem
{
public string Name { get; set; }
public string Url { get; set; }
};
List<categoryItem> generalCategoryList;
private void initSearchCategory()
{
generalCategoryList = new List<categoryItem>();
foreach (HtmlNode singleOptionNode in optionNodeList)
{
......
//store info
categoryItem singleCategoryItem = new categoryItem();
singleCategoryItem.Name = generalCategory;
singleCategoryItem.Url = singleCategoryUrl;
//add to list
generalCategoryList.Add(singleCategoryItem);
}
if (generalCategoryList.Count > 0)
{
//init search category
cmbSubCategory.DataSource = generalCategoryList;
cmbSubCategory.DisplayMember = "name";
cmbSubCategory.ValueMember = "url";
}
}
然后ComboBox中就可以看到对应的选项了:
【总结】
绑定的动作,其实很简单:
cmbSubCategory.DataSource = generalCategoryList;
cmbSubCategory.DisplayMember = "name";
cmbSubCategory.ValueMember = "url";
就可以了。
但是要注意:
此处,如果改为:
public struct categoryItem
{
public string name;
public string url;
};
List<categoryItem> generalCategoryList;
private void initSearchCategory()
{
generalCategoryList = new List<categoryItem>();
foreach (HtmlNode singleOptionNode in optionNodeList)
{
......
//store info
singleCategoryItem.name = generalCategory;
singleCategoryItem.url = singleCategoryUrl;
//add to list
generalCategoryList.Add(singleCategoryItem);
}
if (generalCategoryList.Count > 0)
{
//init search category
cmbSubCategory.DataSource = generalCategoryList;
cmbSubCategory.DisplayMember = "name";
cmbSubCategory.ValueMember = "url";
}
}
那么结果就错了,然后每一项,就都是对应的对象的名字了:
具体根本原因,暂时懒得去深究了。
以上是关于ComboBox 如何动态赋值 C#的主要内容,如果未能解决你的问题,请参考以下文章