TypeConverter, UITypeEditor selbst auslösen

Spyke

Premium-User
Hi,
weiß jemand und/oder kennt jemand einen Artikel wie ich TypeConverter und/oder UITypeEditor selbst auslösen kann.
Sprich das es sich verhält wie im PropertyGrid?

Problem:
Ich habe die Informationen einer Eigenschaft nur über das PropertyInfo Objekt.
Da die C# Klasse dynamisch zur Laufzeit erstellt wird (CSharpCodeProvider) und instanziiert wird (Activator.CreateInstance).

Die generierten Eigenschaften will ich jetzt nochmals in einer Liste anzeigen mit zusatz Informationen und möchte nun für die Eigenschaft den jeweiligen TypeConverter und/oder UITypeEditor ausführen lassen.
(In der Liste soll man Test Eingaben tätigen können)

Über propertyInfo.GetCustomAttribute kann ich ja die jeweiligen TypeCOnverter oder UITypeEditor Attribute abfragen.

Mit TypeDescriptor erstelle ich den eigentlichen TypeConverter. (TypeDescriptor.GetConverter)

Aber dann haperts auch schon bei mir.

Das ganze soll ohne Datenbindung laufen.

Hoffe ihr versteht mein Problem und könnt helfen.
 
Zuletzt bearbeitet:
Hi Spike

Die TypeConverter Klasse bietet diverse Methode zum Konvertieren, die natürlich auch so aufgerufen werden können. Ich versteh nur nicht, was du mit "selbst auslösen" meinst! Könntest du das bitte erklären!
 
Hab mir gerade mal PropertyGrid per Reflektor angesehen.
Code:
public object ConvertTextToValue(string text)
{
    if (this.TypeConverter.CanConvertFrom(this, typeof(string)))
    {
        return this.TypeConverter.ConvertFromString(this, text);
    }
    return text;
}
(aus: System.Windows.Forms.PropertyGridInternal.GridEntry)

Ich hatte es wohl nur nicht konsquent weiter verfolgt, werds morgen nochmal genauer testen.

zu meinem Problem:
Ich habe eine Liste die ist selbst erstmal Datengebunden mit einer Klasse ähnlich dieser:
Code:
class MeinProperty
{
    public string PropertyName { get; }
    public string ZusatzInfosAusDiversenAttributen { get; }
    public PropertyInfo Info;
}

Die Liste Binde ich an ein C1FlexGrid.
meinFlex.DataSource=new BindingList<MeinProperty>(...);

Über die Ereignisse GetUnboundValue und SetUnBoundValue des C1FlexGrid rufe ich nun intern die entsprechenden GetValue und SetValue Methoden des PropertyInfo auf.

Für die Anzeige der Werte hätte ich dann natürlich gerne wieder die gleiche Darstellung wie ich sie in meinem TypeConverter angegeben habe.
Und natürlich auch das meine Eingaben entsprechend verarbeitet werden.

Ich hoffe C1FlexGrid ist bekannt :D
 
ok habs mit TypeConverter, musste nur eine Classe mit ITypeDescriptorContext erstellen und dort intern die TypeConverter Methoden aufrufen.

TypeConverter selbst wird über Activator.CreateInstance instanziiert.

UITypeEditor, muss ich jetzt noch abprüfen.
 
Also UITypeEditor läuft so ähnlich, außer das ich noch eine Hilfsklasse für IWindowsFormsServideProvider (oder wie das ding heißt) brauchte.
 
Problem war hauptsächlich das ich heute damit fertig werden musste.
Und da hats dann bissel geschludert mit der eigenen Informationsfindung. :rolleyes:
Und ich hätte nicht gedacht das es doch so einfach ist.
 

Neue Beiträge

Zurück