2012-10-10 212 views
0

如何在C#中用我的显示成员是数组的值并且value成员是数组键的数组填充组合框?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

先显示数组。基本上你的代码.. – nawfal

+3

通过编写代码,也许? – 2012-10-10 15:29:51

+0

您可以使用'DataBinding'例如'ControlID.DataSource = array;' – adatapost

回答

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

+0

非常感谢!我可以在页面加载时设置选定的索引吗?我试过cmb_RelayType.SelectedIndex =(int)(dataset.Tables [0] .Rows [1] [1]);但似乎没有工作。 – Diane

+0

您可以在填充组合中的项目后随时设置SelectedIndex。要测试,只需尝试'cmb_RelayType.SelectedIndex = 3;' – paul

+0

我试过并得到这个错误:InvalidArgument ='3'的值对'SelectedIndex'无效。 参数名称:SelectedIndex – Diane

0

如果你只是把string[]DataSource你没有定义DataMemberValueMember。 你可以简单地得到myComboBox.SelectedValuemyComboBox.SelectedIndex

DataMember -Property只是描述了一个属性,显示在您设置为DataSource的类型的ComboBox中。

比如你设定的

class Test 
{ 
    public string Name { get; set; } 
    public int Id { get; set; } 
} 

DataSource列表,并希望框来显示你要设置

myComboBox.DataMember = "Name"; 

ValueMember是针对“不可见”属性Name财产GUI,您可以在其中存储值供以后使用,例如:

myComboBox.ValueMember = "Id" 

因此,如果有人通过其显示的Name选择了一个项目,您可以从的Value(不知道核心的propper名称)属性中获得Id

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