| 

.NET C# Java Javascript Exception

6
Hallo,

ich möchte gern in einem PropertyGrid eine Combo Box anzeigen. Ich habe gelesen das es mit einem Enum möglich ist.

Jetzt habe ich aber keine Konstanten Werte für mein Enum sondern würde diese aus einer Datenbank laden wollen.

Kennt einer eine Möglichkeit ein Enum während der Laufzeit zu erzeugen oder zu erweitern?

Danke schon mal im voraus
31.10.2011
mario_kaempfer 273 1 8
3 Antworten
2
Hallo,

wenn du unbedingt einen dynamischen Enum verwenden willst dann kannst du diesem mit der Enum-Builder Klasse zur Laufzeit erzeugen.

Siehe: EnumBuilder-Klasse
31.10.2011
michlG 1,7k 1 5
1
Es geht auch ohne Enum. Hier findest du eine gute Anleitung:
Optimale Nutzung des PropertyGrid-Steuerelements in .NET Framework
Suche nach "Hinzufügen von Unterstützung für Domänenlisten und einfache Dropdowneigenschaften".
Für Eigenschaften, die eine Enumeration auf der Basis des Enum-Typs zurückgeben, zeigt das PropertyGrid-Steuerelement automatisch die Enumerationswerte in einer Dropdownliste an. Der EnumConverter stellt diese Funktionalität ebenfalls zur Verfügung.

Für Ihre eigenen Eigenschaften möchten Sie eventuell Benutzern eine Liste mit gültigen Werten zur Verfügung stellen, die manchmal als Auswahlliste oder Domänenliste bezeichnet wird und Typen enthält, die nicht auf Enum basieren. Dies ist immer dann der Fall, wenn die Domänenwerte zur Laufzeit nicht bekannt sind, oder wenn sich die Werte ändern können.
31.10.2011
Jürgen Luhr 7,1k 1 9
0
Aus meinen (schon etwas länger zurückliegenden) Erfahrungen mit dem WinForms Designer würde ich Dir an dieser Stelle zu einer ICustomTypeDescriptor Implementierung raten. Mithilfe eines TypeDescriptors kannst Du auf so ziemlich alles in den Designern Einfluss nehmen.
Man kann damit z.B.

  • einem Typ Properties hinzufügen, die er eigentlich gar nicht unterstützt (also wie in Deinem Fall z.B. einen DropDown UITypeEditor für etwas, was gar keine Enum ist)
  • Properties rausfiltern (und hinter solche Filter tatsächlich Regeln legen, nicht nur Browsable(true) oder Browsable(false) aufgrund statischer Information
  • ...

Noch als kleine Randbemerkung: Es gibt ein exzellentes 3rd Party PropertyGrid - siehe hier. Ich hab das selbst viele Jahre im Einsatz gehabt, Features & Support ausgezeichnet.

Vielleicht hilfts Dir noch...
Viel Erfolg
Florian
07.11.2011
ffordermaier 8,4k 3 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH