C#填充组合框

时间:2012-10-10 15:27:22

标签: c# combobox

如何使用数组填充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 = ?????

3 个答案:

答案 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,则不必定义DataMemberValueMember。 您只需获取myComboBox.SelectedValuemyComboBox.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";