C # Kombiniertes Element mit selectedValue setzen

8

Ich erstelle dynamisch eine Combobox wie folgt:

%Vor%

Das Problem ist, wenn cmb.SelectedValue = givenAnswers[0].AnswerId; cmb ausgeführt wird. SelectedValue ist immer Null.

Beim Debuggen und bei der Untersuchung von answers (der Datenquelle) sehe ich, dass die ID (ValueMember) genauso wie die AnswerId (in der if-Anweisung) ist. Beide haben denselben Typ (lang) und denselben Wert, aber SelectedValue bleibt null.

Gibt es etwas, das ich nicht sehe?

BEARBEITEN:

Es sieht so aus, als ob die Combobox leer bleibt. Wenn ich cmb.SelectedValue = givenAnswers[0].AnswerId; durch cmb.SelectedIndex = 0; ersetze, bekomme ich eine ArgumentOutOfRangeException. Dies, während die Antworten Sammlungen zählt 2. Also ist die Datenquelle nicht null ... Sehr strenge huh?

Lösung:

Die Eigenschaften SelectedValue, SelectedIndex und SelectedItem können erst festgelegt werden, wenn das Steuerelement dem Formular hinzugefügt wurde. Nachdem das Steuerelement dem Formular hinzugefügt wurde, können die Eigenschaften selectedValue, -Index und -Item festgelegt werden.

    
Martijn 19.05.2010, 08:56
quelle

6 Antworten

6

Lösung:

Die Eigenschaften SelectedValue, SelectedIndex und SelectedItem können erst festgelegt werden, wenn das Steuerelement dem Formular hinzugefügt wurde. Nachdem das Steuerelement dem Formular hinzugefügt wurde, können die Eigenschaften selectedValue, -Index und -Item festgelegt werden.

    
Martijn 08.07.2010, 08:12
quelle
3

Ich habe dieses komische Problem schon einmal getroffen, endlich habe ich aufgegeben und einen anderen Weg gewählt:

%Vor%

Es hat gut funktioniert ... Hoffe du viel Glück!

    
Danny Chen 19.05.2010 09:05
quelle
3
%Vor%

Der cmb.FindStringExact ("Desired String") gibt den Index des Werts zurück, den Sie auswählen möchten, und der cmb.SelectedIndex setzt die Combobox auf diesen Index.

Danke Billious, dass er mir das Licht gezeigt hat!

FYI - Dies ist die VB.NET Winforms Version.

    
Danimal111 05.04.2013 15:41
quelle
1

Sehen Sie sich die gleiche Immobilie an?

%Vor%

Sie verweisen auf ein anderes ValueMember und dann auf die ID, die Sie in SelectedValue veröffentlichen. Außerdem sollten Sie versuchen, Ihr Display- und Value-Mitglied vor der Datenbindung einzurichten. Es ist schneller.

    
riffnl 19.05.2010 09:10
quelle
0

Stellen Sie sicher, dass QuestionAnswer über öffentliche Zugriffsmethoden verfügt, die (denselben Namen) den von Ihnen verwendeten Anzeige- / Wertelementen entsprechen.

    
thelost 19.05.2010 09:04
quelle
0

Ich stieß auf das gleiche Problem und stellte fest, dass mein Problem darin bestand, SelectedValue als Integer zu behandeln, obwohl es tatsächlich ein Objekt war. Die "FindByValue" -Lösung von Danny Chen oben funktioniert nicht in WinForms, also habe ich versucht mit "FindStringExact" und suchte auf dem DisplayMember:

%Vor%

Keine ideale Lösung, aber es hat funktioniert.

    
Billious 17.08.2011 04:52
quelle

Tags und Links