2012-10-10 243 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";