Aufzählungen und Kombinationsfelder in C #

7

Ich entwickle gerade eine C # -Anwendung.

Ich muss eine Enumeration mit einem Kombinationsfeld verwenden, um den ausgewählten Monat zu erhalten. Ich habe Folgendes, um die enum zu erstellen:

%Vor%

Ich initialisiere dann die Combobox wie folgt:

%Vor%

Dieses Bit Code funktioniert gut, aber das Problem ist, wenn ich versuche, den ausgewählten Enum-Wert für den ausgewählten Monat zu erhalten

Um den Wert des Enumerators aus dem Kombinationsfeld zu erhalten, habe ich Folgendes verwendet:

%Vor%

Wenn ich jedoch versuche, den obigen Code auszuführen, erscheint ein Fehler, der besagt, dass eine Ausnahme der ersten Chance vom Typ System.InvalidCastException aufgetreten ist.

Was ich falsch gemacht habe.

Danke für jede Hilfe, die Sie zur Verfügung stellen können

    
Boardy 26.02.2011, 19:58
quelle

5 Antworten

7

Versuchen Sie es

%Vor%

statt

%Vor%

Aktualisiert mit korrekten Änderungen

    
SadullahCeran 26.02.2011, 20:01
quelle
6

Das Problem besteht darin, dass Sie die Combobox mit String-Namen füllen ( Enum.GetNames returns string[] ) und später versuchen, sie in Ihre enum zu konvertieren. Eine mögliche Lösung könnte sein:

%Vor%

Ich würde auch überlegen, vorhandene Monatsinformationen von .Net zu verwenden, anstatt Ihre enum hinzuzufügen:

%Vor%     
Snowbear 26.02.2011 20:01
quelle
5

Versuchen Sie

%Vor%     
SwDevMan81 26.02.2011 20:03
quelle
3

Es gibt wirklich keinen Grund, Enum.GetNames überhaupt zu verwenden. Warum sollten Zeichenketten in der ComboBox gespeichert werden, wenn Sie eigentlich die Monate möchten?

Verwenden Sie stattdessen Enum.GetValues :

%Vor%     
Timwi 26.02.2011 21:13
quelle
1

Sie haben die Namen der Monate in der Combobox gespeichert, nicht die int-Werte. Ihr ausgewähltes Element ist eine Zeichenfolge.

    
Bryn Keller 26.02.2011 20:03
quelle

Tags und Links