繁体   English   中英

C#填充组合框

[英]C# populate 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 = ?????

照原样使用数组...

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

如果仅将string[]作为DataSource放置,则不必定义DataMemberValueMember 您可以简单地获取myComboBox.SelectedValuemyComboBox.SelectedIndex

DataMember -Property只是描述了一个属性,该属性将在您设置为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选择一项,则可以从ComboBoxItemValue (不知道该属性的正确名称)属性中获取Id

使用一个类并绑定它的集合:

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";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM