Frage

Ich habe eine ComboBox set up wie folgt, wobei KVPList ist ein IList (von KeyValuePair wenn es darauf ankommt):

comboBox.DisplayMember = "Value";
comboBox.ValueMember = "Key";
comboBox.DataSource = KVPList;

Ich habe dann eine Bindung mit SelectedValue, die Bindung an einen BindingSource (ein DataSet).Für was auch immer Grund, combo-box kommt immer leer, wenn das Formular angezeigt wird.Es ist gut bevölkert ist, jedoch (die Werte der IList zeigen sich gut und ausgewählt werden können).

Nun, ich habe mein bestes versucht, Spur, durch, und es scheint, zunächst auf die SelectedValue richtig, wenn gebunden, dann aber irgendwo auf dem Weg wird es zurückgesetzt, um null.Ich habe gespielt mit der Bestellung werden die Dinge genannt, wie auch, ohne Erfolg.

Kann jemand etwas Licht in diese Schuppen oder schlagen Sie eine Problemumgehung?

Für den Datensatz, auf den die gleiche form haben, habe ich ein weiteres ComboBox auf dem gleichen Formular, mit seiner SelectedValue die an das gleiche BindingSource.Die DataSource ist ein DataSet, nicht ein IList und es funktioniert wie ein Charme.Es könnte eine option sein, um eine DataTable aus der IList, aber wie es scheint, eine ganze Menge zusätzlicher overhead;Ich bin generieren IList von einer Aufzählung.

War es hilfreich?

Lösung

Autsch.Nach im Grunde einen halben Tag verschwendet, ich habe es herausgefunden.Es war komplett ein Fehler meinerseits.

Die KVPList wurde eingestellt, um eine IList von KeyValuePair<short,string>, aber das Feld ist vom Typ int.Im wesentlichen, das databinding würde Feuer, und setzen Sie die SelectedValue Eigenschaft.Dann die DisplayMember und ValueMember Bindungen entlassen würde, die überprüfung der SelectedValue wieder.Da die ValueMember Typ short, nicht int, wäre es nicht finden, eine übereinstimmung und somit auf null.

Etwas komisch muss passiert sein mit boxing und unboxing, aber ich bin zu müde, um zu verstehen, warum gerade jetzt.

Ich lasse diese Frage in den Fall, dass jemand anderes läuft in das gleiche Problem.Es ist schwer aufzuspüren, denn ich würde erwarten, dass es entweder versuchen zu werfen oder werfen eine Ausnahme, nicht leise gehen null.Nach alle, short und int sind beide Werttypen und zuletzt habe ich überprüft (int)10 == (short)10 gilt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top