如何使用数组填充C#中的组合框,该数组的显示成员是数组值,值成员是数组键?
string[] RelayTypeArray = new string[4];
RelayTypeArray[0] = null;
RelayTypeArray[1] = "Boiler";
RelayTypeArray[2] = "Valve";
RelayTypeArray[3] = "Pump";
cmb_RelayType.DataSource = RelayTypeArray;
cmb_RelayType.DisplayMember = RelayTypeArray;
cmb_RelayType.ValueMember = ?????
答案 0 :(得分:5)
只是按原样使用你的数组......
string[] RelayTypeArray = new string[4];
RelayTypeArray[0] = null;
RelayTypeArray[1] = "Boiler";
RelayTypeArray[2] = "Valve";
RelayTypeArray[3] = "Pump";
cmb_RelayType.DataSource = RelayTypeArray;
如果您需要文字:cmb_RelayType.SelectedValue
如果您需要索引:cmb_RelayType.SelectedIndex
答案 1 :(得分:0)
如果您只是将string[]
设为DataSource
,则不必定义DataMember
或ValueMember
。
您只需获取myComboBox.SelectedValue
和myComboBox.SelectedIndex
。
DataMember
- 属性只描述了在您设置为DataSource
的类型的ComboBox中显示的属性。
例如,您设置了一个列表
class Test
{
public string Name { get; set; }
public int Id { get; set; }
}
为DataSource
并希望该框显示您必须设置的Name
属性
myComboBox.DataMember = "Name";
ValueMember
是一个"隐形" GUI的属性,您可以在其中存储值供以后使用,例如:
myComboBox.ValueMember = "Id"
因此,如果有人通过其显示的Name
选择了一个项目,那么您可以从Id
获取Value
(不知道心脏的专业名称)属性{ {1}}。
答案 2 :(得分:0)
使用类并绑定它的集合:
class RelayType
{
private int m_Index;
private string m_Value;
public RelayType(int index, string value)
{
m_Index = index;
m_Value = value;
}
public int Index
{
get { return m_Index; }
}
public string Value
{
get { return m_Value; }
}
}
var relayTypeCol = new List<RelayType>();
relayTypeCol.Add(new RelayType(0, ""));
relayTypeCol.Add(new RelayType(1, "Boiler"));
relayTypeCol.Add(new RelayType(2, "Valve"));
relayTypeCol.Add(new RelayType(3, "Pump"));
cmb_RelayType.DataSource = relayTypeCol;
cmb_RelayType.DisplayMember = "Value";
cmb_RelayType.ValueMember = "Index";