2010-09-08 3 views
0

Je rencontre des problèmes lors de la définition de la propriété ValueMember de ma zone de liste déroulante.C# combobox ValueMember

La ligne comboBox1.ValueMember = "Code"; casse mon code.

Voici mon code:

Form1.cs:

private void Form1_Load(object sender, EventArgs e) { 
    ... 
    ...  
    MAPList MAP = new MAPList(); 
    comboBox1.DataSource = MAP.All; 
    comboBox1.ValueMember = "Code"; 
    ... 
    ... 
} 

MAPList.cs:

public class MAPList { 
    public readonly List<MAP> All; 

    public MAPList() { 
     All = new List<MAP>(); 

     var MapData = // Getting map data 

     foreach(MAP m in MapData) { 
      All.Add(new Map(m.Name, m.Code)); 
     } 
    } 
} 

MAP.cs:

public class MAP { 
    public readonly string Name; 
    public readonly string Code; 

    public RadioCode(string name, string code) { 
     Name = name; 
     Code = code; 
    } 

    public override string ToString() { 
     return String.Format("{0}: {1}", Name, Code); 
    } 
} 

Répondre

3

Essayez de convertir code comme la propriété au lieu d'un membre et lie alors il

+0

wow ... qui est étrange! pourquoi cela ne fonctionnerait-il pas lorsque le Code est un membre public en lecture seule? – Moon

+0

@Ruby ComboBox utilise la réflexion pour obtenir la valeur de l'objet sous-jacent. Au cours de ce processus, il recherche des propriétés et non des champs –