2009-05-29 2 views
1

Ich habe eine control, gehostet auf DesignSurface.Windows-Steuerelement gibt unterschiedliche Werte zurück, wenn auf verschiedene Arten zugegriffen wird

Wenn auf seine Standorteigenschaft von control.Location zugegriffen wird und wenn auf propertyDescriptor.GetValue(control) zugegriffen wird, erhalte ich andere Werte.

propertyDescriptor ist vom Typ PropertyDescriptor.

Hat jemand eine Lösung dafür? Ich habe überprüft, dass die Objektinstanz gleich ist.

+0

Nun, was Werte bekommt man von den zwei verschiedenen Ansätze? Und was ist die spezifische Kontrolle? –

+1

Vielleicht wichtiger; Woher hast du den PropertyDescriptor? Es gibt verschiedene Möglichkeiten, dies zu tun, die zu anderen Ergebnissen führen können ... –

Antwort

1

Nun, es könnte auf das Objekt abhängen. und wie du deinen Typdeskriptor bekommen hast. Z.B. es könnte ein benutzerdefinierter Deskriptor sein, der alles zurückgeben könnte. Wenn dies der Fall ist, können Sie der GetTypedescriptor-Methode Informationen geben, keine benutzerdefinierten Typdescriptoren zu verwenden. (sry für nicht den eigentlichen Code zu veröffentlichen, aber ich habe keine IDE verfügbar und kann mich nicht an die genaue Syntax erinnern).

Ein anderer Ansatz wäre eine PropertyInfo anstelle eines propertyDescriptor (wenn der Rest des Codes mit einer System.Reflection.PropertyInfo funktioniert).

Sie können die Propertyinfo des Objektes Länge für die stype Zeichenfolge erhalten wie diese

typeof (string) .GetProperty ("Länge"); oder wenn es ein unbekannter Typ zur Kompilierzeit ist: obj.GetType(). GetProperty ("Length");

Wenn Sie alle Eigenschaften durchlaufen müssen, rufen Sie stattdessen GetProperties auf.

Aber all das Property verlässt sich auf meine Vermutung, dass Sie in der Lage sein würde Property zu verwenden, anstatt PropertyDescriptor

+0

Oder besser noch ... da es bekannt ist, ein Steuerelement zu sein ... warum es nicht einfach in Control umwandeln und verwenden .Location ;-p –

Verwandte Themen