C# combobox, in der überschriebenen ToString

Ich bin erleben einige Probleme bei der Arbeit mit ComboBox.

Dem display member für meine combobox ist nicht bevölkert von den überschriebenen ToString - Methode der Klasse ANZEIGEN.

Hier ist mein 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));
        }
    }
}

KARTE.cs:

public class MAP {
    public readonly string Name;

    private string code;
    public string Code { get { return code; } }

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

    public override string ToString() {
        return String.Format("{0}: {1}", Name, Code);
    }
}
  • Was ist die Beziehung? Ich sehe nicht, rufen Sie die Objekt-Karte überall
  • Also, was ist die Anzeige statt? Nur "KARTE"?
  • Du bist ValueMember Einstellung für die Eigenschaft "Code". Nirgends wird Ihre .ToString überschreiben, get aufgerufen. Statt überschreiben von ToString, nur diesen code ausgesetzt als Instanz-Eigenschaft und eine Bindung zu diesem.
  • Tao: Nein. Der Wert für "Code"
  • nicht überschriebene ToString-Methode Steuern, was der Benutzer sieht in der combobox??
  • genau. Sie sind verbindlich für die Eigenschaft "Code", also es zeigt einen code. Binden einer Eigenschaft zurückgibt String.Format("{0}: {1}", Name, Code); binden Sie einen string-Wert, warum sollte das kompilierte nennen .ToString auf einem string? @Dan Tao die Antwort richtig ist.

InformationsquelleAutor Moon | 2010-09-08
Schreibe einen Kommentar