https://documentation.devexpress.com/WindowsForms/DevExpress.XtraEditors.ComboBoxEdit.class
1、使用Winform自带ComboBox控件,可直接绑定数据源
因为Winform自带 ComboBox 是有 DataSource 属性的,所以它可以直接绑定数据源,如 DataTable、ListItem 等。使用 DataTable 或List直接绑定。
public void BindSource()
{
DataTable dt = new DataTable();
dt.Columns.Add("Text", Type.GetType("System.String"));
dt.Columns.Add("Value", Type.GetType("System.String"));
dt.Rows.Add("请选择", "0");
dt.Rows.Add("选项一", "1");
dt.Rows.Add("选项二", "2");
dt.Rows.Add("选项三", "3");
comboBox1.DataSource = dt;
comboBox1.DisplayMember = "Text"; // Text,即显式的文本
comboBox1.ValueMember = "Value"; // Value,即实际的值
comboBox1.SelectedIndex = 0; // 设置为默认选中第一个
}
string text = this.comboBox1.Text; //获取选中项文本
string value = this.comboBox1.SelectedValue.ToString(); //获取选中项的值
2、ComboBoxEdit:不能直接绑定数据源,只能手工添加。
使用 ComboBoxEdit 控件添加key/value项。
因为 ComboBoxEdit 没有 DataSource 属性,所以不能直接绑定数据源,只能一项一项的添加。
public class ListItem : Object
{
public string Text { get; set; }
public string Value { get; set; }
public ListItem(string text,string value)
{
this.Text = text;
this.Value = value;
}
public override string ToString()
{
return this.Text;
}
}
public void BindSource()
{
string text = string.Empty;
string value = string.Empty;
ListItem item = null;
for (int i = 0; i < 4; i++)
{
if (i==0)
{
text = "请选择";
}
else
{
text = "选项" + i.ToString();
}
value = i.ToString();
item = new ListItem(text, value);
this.comboBoxEdit1.Properties.Items.Add(item);
}
}
获取选中项的值时,注意判断是否选择。
string text = string.Empty;
string value = string.Empty;
if (comboBoxEdit1.SelectedIndex < 0) //小于0,表示未选择,如果是输入的也小于0
{
text = comboBoxEdit1.Text.Trim(); //只能获取输入的文本
}
else
{
text= (comboBoxEdit1.SelectedItem as ListItem).Text; //获取选中项文本
value = (comboBoxEdit1.SelectedItem as ListItem).Value; //获取选中项的值
}
3、CheckedComboBoxEdit:可直接绑定数据源
//设置数据源
checkedComboBoxEdit1.Properties.DataSource = Facility.GetList(factoryID);
checkedComboBoxEdit1.Properties.DisplayMember = "Name";
checkedComboBoxEdit1.Properties.ValueMember = "ID";
//设置选中项
checkedComboBoxEdit1.EditValue = strid
//得到选择项的ID字符串(逗号分隔)
object items = checkedComboBoxEdit1.Properties.GetCheckedItems();
checkedComboBoxEdit1.SetEditValue(string.Empty);//重置
checkedComboBoxEdit1.Properties.Items.Clear();//清空数据源
//循环项
foreach (CheckedListBoxItem item in checkedComboBoxEdit1.Properties.Items)
{
item.CheckState = CheckState.Unchecked;
}
//手工绑定
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].isCheck == true)
checkedComboBoxEdit1.Properties.Items.Add(i, myList[i].Name, CheckState.Checked, true);
else
checkedComboBoxEdit1.Properties.Items.Add(i, myList[i].Name, CheckState.Unchecked, true);
}