0

表示メンバーが配列の値であり、値メンバーが配列キーである配列を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 = ?????
4

3 に答える 3

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

于 2012-10-10T15:49:58.187 に答える
0

を定義する必要がないので、string[]を置くだけの場合。とを取得するだけです。DataSourceDataMemberValueMembermyComboBox.SelectedValuemyComboBox.SelectedIndex

DataMember-Propertyは、設定したタイプのComboBoxに表示するプロパティを記述しているだけですDataSource

たとえば、次のリストを設定します

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

として、設定する必要のあるプロパティをDataSourceボックスに表示したいName

myComboBox.DataMember = "Name";

これValueMemberはGUIの「非表示」プロパティであり、後で使用するために値を保存できます。次に例を示します。

myComboBox.ValueMember = "Id"

したがって、誰かが表示されたアイテムを1つ選択すると、の(適切な名前がわからない)プロパティからName取得できます。IdValueComboBoxItem

于 2012-10-10T15:44:08.860 に答える
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";
于 2012-10-10T15:44:16.283 に答える