DevExpress的下拉框控件ComboxBoxEdit怎样绑定键值对选项

mac2025-06-23  7

场景

DevExpress的下拉框控件ComboBoxEdit控件的使用:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102855898

在设置ComboBoxEdit的下拉框内容时除了最简单的

comboBox.Properties.Items.Add("下拉选项1");

如果要添加键值对形式的数据该怎样实现。

注:

博客主页:https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。

实现

即在Add选项时添加的不是普通的字符串,而是一个对象实体类,里面有键值对两个属性,在添加选项时是添加一个个的对象。

为了在显示时显示对象的value,需呀重写对象的toString方法,使其返回value。

新建实体类对象,必须要重写其toString方法。 

public class ControlModelItem     {         public ControlModelItem(string key,string value)         {             this.key = key;             this.value = value;         }         private string key;         public string Key         {             get { return key; }             set { key = value; }         }         private string value;         public string Value         {             get { return this.value; }             set { this.value = value; }         }         public override string ToString()         {             return Value;         }     }

然后声明下拉框

DevExpress.XtraEditors.ComboBoxEdit comboBox = new DevExpress.XtraEditors.ComboBoxEdit();

添加下拉框选项

 int i=0; ComboBoxItemCollection coll = comboBox.Properties.Items; foreach(ControlModelItem controlModelItem in controlModelItems)             {                 coll.Add(controlModelItem);                 if (controlModelItem.Value == currentCellValue)                     comboBox.SelectedIndex = i;                 i++;             }

获取选中项的key和value

if (comboBox.SelectedItem != null)             {                 string key = (comboBox.SelectedItem as ControlModelItem).Key;                 string value = (comboBox.SelectedItem as ControlModelItem).Value;             }

注意:

这里是要将当前Cell的内容赋值给下框默认选中,如果通过SelectText强行赋值的话,则会导致当前选中

的key缺失,在获取key时就会报错。

可以通过上面这种判断value相等时将当前index设置为选中项SelectedIndex。

获取通过SelectedItem和下标的方式指定选中项。

此时就可以在下拉框的选项改变事件中获取当前选中项的key和value

comboBox.SelectedValueChanged += comboBox_SelectedValueChanged; private void comboBox_SelectedValueChanged(object sender, EventArgs e)         {                         DevExpress.XtraEditors.ComboBoxEdit comboBox = sender as ComboBoxEdit;             ControlModelItem controlModelItem = comboBox.SelectedItem as ControlModelItem;             string controlModelItemkey = controlModelItem.Key;             switch (controlModelItemkey)             {                 //恒压                 case "ConstantVoltage":                     break;                                 default:                     break;             }         }

 

最新回复(0)