一、常用属性和用法
1、Text:获取或设置与此控件关联的文本。
//设置默认值
this.comboBox1.Text = "请选择内容";
//or
comboBox1.Items.Add("请选择内容");
comboBox1.SelectedIndex = 0;
2、SelectedIndex:获取或设置指定当前选定项的索引。(设置新索引会 SelectedIndexChanged 引发 事件。)
3、SelectedItem:获取或设置 ComboBox 中当前选定的项。
//取得当前选择的Item的显示值
this.comboBox1.SelectedItem.ToString();
4、SelectedText:获取或设置 ComboBox 的可编辑部分中选定的文本。如果 DropDownStyle 设置为 DropDownList,则返回值为空字符串 ("")。
5、数据绑定:
comboBox1.DataSource = dt;
comboBox1.DisplayMember = "dtColName";
comboBox1.ValueMember = "ID";
/*DisplayMember绑定的是需显示的字段,ValueMember绑定的是对应的值
一般DisplayMember是显示给客户看的, 而ValueMember 是绑定处理程序标识 给程序员看的*/
combobox控件显示的是DisplayMember 绑定的字段,也就是说comboBox1的text属性取的值是DisplayMember 绑定的字段。
6、获取ValueMember的值:
DataRowView drv = (DataRowView)comboBox1.SelectedItem;
ID= Convert.ToInt32(drv.Row["dtColName2"].ToString());
7、SelectedValue:获取或设置由 ValueMember 属性指定的成员属性的值。 类型:System.Object,包含由ValueMember 属性指定的数据源成员的值的对象。
当设置了DataSource 属性后,SelectedValue 属性值会默认为第一行,因此,如果不希望ComboBox自动选择第一行,还需在设置完DataSource 后自行将SelectedValue 设为“”。(根据SelectedValue的值类型设置,如果是字符就设置“”,如果是数值可设置为0)
二、数据绑定方法
1、绑定List集合:
private void ListDataBinding()
{
List<string>list = new List<string>()
{
"test1","test2","test3"
};
this.comboBox1.DataSource = list;
}
2、绑定数组集合:
private void ArrayDataBinding()
{
string[] array = new string[] { "test1","test2","test3" };
this.comboBox1.DataSource = array;
}
3、绑定数组集合:
//创建一个实体类,用于存储数据
public class Data
{
public string ID { get; set; }
public string ShowValue { get; set; }
}
List<Data> datas = new List<Data>();
private void ArrayDataBinding()
{
Data data1 = new Data() { ID = "1", ShowValue = "test1" };
Data data2 = new Data() { ID = "2", ShowValue = "test2" };
Data data3 = new Data() { ID = "3", ShowValue = "test3" };
datas.Add(data1);
datas.Add(data2);
datas.Add(data3);
this.comboBox1.DataSource = datas;
this.comboBox1.DisplayMember = "ShowValue";
this.comboBox1.ValueMember = "ID";
}
//利用控件的SelectedIndexChanged事件选中的DisplayMember来查找对应的ValueMember。
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
this.textBox1.Text = comboBox1.SelectedValue.ToString();
}
结果如图:
4、绑定DataTable:
private void DataTableDataBinding()
{
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("ID");
DataColumn dc2 = new DataColumn("ShowValue");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
DataRow dr1 = dt.NewRow();
dr1["ID"] = "1";
dr1["ShowValue"] = "test1";
DataRow dr2 = dt.NewRow();
dr2["ID"] = "2";
dr2["ShowValue"] = "test2";
DataRow dr3 = dt.NewRow();
dr3["ID"] = "3";
dr3["ShowValue"] = "test3";
dt.Rows.Add(dr1);
dt.Rows.Add(dr2);
dt.Rows.Add(dr3);
this.comboBox1.DataSource = dt;
this.comboBox1.ValueMember = "ID";
this.comboBox1.DisplayMember = "ShowValue";
}
//利用控件的SelectedIndexChanged事件选中的DisplayMember来查找对应的ValueMember。
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
this.textBox1.Text = comboBox1.SelectedValue.ToString();
}
结果如图:
5、绑定枚举:
//定义一个颜色枚举
public enum ColorEnum
{
red,
blue,
skyblue
}
//使用Enum.GetNames()方法,将枚举元素的名称赋值给控件。
private void EnumDataBinding()
{
this.comboBox1.DataSource = Enum.GetNames(typeof(ColorEnum));
}
6、利用Items.Add方法添加元素:
private void ItemsDataBinding()
{
this.comboBox1.Items.Add("test1");
this.comboBox1.Items.Add("test2");
this.comboBox1.Items.Add("test3");
}
7、Items.AddRange:
private void AddRangeDataBinding()
{
object[] array = new object[] { test1, test2, test3 };
this.comboBox1.Items.AddRange(array);
}
Items.AddRange()方法里面的参数为Object类型的数组。