Problem mit Enumeration
-
so guten morgen allerseits jetzt bin ich aufgewacht, und hab auch verstanden was ihr mir sagen wolltet
ich bin nen Blinde!!
private kindof ko = kindof.AOI; //und dann als Verwendung //get case "Art des Tests": e.Value = this.ko; break; //set case "Art des Tests": ko = (kindof)e.Value; break;
aber angezeigt wird es immernoch nicht!
ich hab zwar jetzt im PGrid jetzt ein dropdown aber da steht nichts drin, noch jemand ne Idee? Ist es wieder so hochtrivial??
-
Ich nehme an, daß in e.Value ein String stehen muß, also einfach Enum.ToString() aufrufen:
e.Value = this.ko.ToString();
Beim Setzen wird es dann so sein, daß in e.Value dann ein String drinsteht, den du dann mit allen Enum-Werten vergleichen mußt, z.B.
foreach(kindOf ko in kindOf) if(ko.ToString() == e.Value.ToString() return ko;
-
Zurück gehts auch noch ne Spur einfacher:
return (kindOf)Enum.Parse(typeof(kindOf), e.Value.ToString(), true);
-
Hi zusammen, ich weiß nicht ob es so gehen könnte, bei mir tuts leider nicht, Problem, ich bekomm zwar mein Dropdown aber da steht nichts drin!
Immernoch nicht. Aktuell sieht es so aus.
Ich glaube aber auch nicht dass ich das in String casten muss, denn ich will ja ein Enum im PropertyGrid haben, denn sonst bekomm ich ja die Auswahl über die combo nicht mehr oder??
Also irgendwas läuft da schief!EDIT: Ich hoffe der Link funktioniert, ich komm leider hier nicht auf meine eigene Seite
dank Web-Content-blocking
-
Das "Get" und "Set" ist ja auch nur dafür da, den aktuellen Wert auszulesen bzw. zu setzen.
Du mußt dem PropertyGrid ja auch eine Liste ALLER enum-Werte übermitteln (leider kenne ich die Klasse nicht...)Welche Eigenschaften und Methoden hat denn die Klasse Property noch, außer "Name"?
-
So langsam begreife ich das Problem - deshalb hattest Du Verständnisprobleme warum Du nicht die gesamte Enum in e.Value packen konntest... Du musst über alle Elemente der Enumeration gehen und jedes einzeln Deiner Combobox zufügen, anders wird's nicht gehen.
foreach (kindOf k in Enum.GetValues(typeof(kindOf))) { comboBox1.Items.Add(k.ToString()); }
Zurück wie in meinem letzten Post dargestellt.
-
hm ich werde es mal auf diese weise versuchen, aber es gibt eine möglichkeit einem Propertygrid direkt ein Enum zu übergeben! Das weiß ich ganz sicher! In nem Webcast zu Propertygrids hab ich das gesehen, nur bei mir scheint noch irgendwo ein Problem zu sein. Die Combobox hab ich ja auch nicht selbst angelegt, das macht ja das Propertygrid von alleine!
Ich schau mir heute abend den Webcast nochmal genau an, und lad mir mal den Beispielcode, vielleicht werde ich dann schlauer. Solange versuche ich es mal mit deiner Idee.
Vielen Dank
-
Was übergibst Du denn bei z.B. ner Stringauswahl? Musst Du dem PropertyGrid vielleicht das Enum-Array Enum.GetValues(...) oder das String-Array Enum.GetNames(...) übergeben?
Die Enum ist ja nur ein Typ, dessen Wert eine Repräsentation einer Ganzzahl ist. Enum.GetValues(typeof(kindOf)) wäre demnach ein Array aller dieser Repräsentationen.
enum kindOf { typA, typB, typC }; // kindOf ist ein Typ. Ein Objekt dieses Typs ist eine Ganzzahl, die vom Namen typ* repräsentiert wird kindOf einTyp = typA; kindOf[] alleTypen = new kindOf[] { typA, typB }; // genau dieses Array "alleTypen" bekommt man auch vom Framework: kindOf[] alleTypen = (kindOf[]) Enum.GetValues(typeof(kindOf));
-
Man man man bin ich doof!!
bag.Properties.Add(new PropertySpec("Art des Tests", typeof(kindof));
natürlich nicht typeOf Enum sondern typeOf(kindof) !!!
-
Und, Polofreak, was spendierst du uns jetzt?
-
naja eigentlich hab ich es ja schlussendlich selbst raus gefunden aber wenn ihr bei mir vorbei kommt zahl ich euch für die Bemühungen ein Bierle
-
LordJaxom schrieb:
Was übergibst Du denn bei z.B. ner Stringauswahl? Musst Du dem PropertyGrid vielleicht das Enum-Array Enum.GetValues(...) oder das String-Array Enum.GetNames(...) übergeben?
Die Enum ist ja nur ein Typ, dessen Wert eine Repräsentation einer Ganzzahl ist. Enum.GetValues(typeof(kindOf)) wäre demnach ein Array aller dieser Repräsentationen.
enum kindOf { typA, typB, typC }; // kindOf ist ein Typ. Ein Objekt dieses Typs ist eine Ganzzahl, die vom Namen typ* repräsentiert wird kindOf einTyp = typA; kindOf[] alleTypen = new kindOf[] { typA, typB }; // genau dieses Array "alleTypen" bekommt man auch vom Framework: kindOf[] alleTypen = (kindOf[]) Enum.GetValues(typeof(kindOf));
wie kommt denn der Beitrag noch vor meinen?? Ich hatte doch extra noch geschaut.
Vielen Dank für die Hilfe!! Echt super nett!! Wahrscheinlich würde es so auch gehen, aber ich kann wenn ich mein kindof Typ an mein PropertyGrid übergeb ohne weiteren Programmieraufwand einfach das Enum nutzen