2009-05-29 1 views
1

У меня есть control, размещенный на DesignSurface.Управление Windows возвращает разные значения при доступе разными способами

Когда к объекту его местоположения обращаются control.Location, и когда к нему обращаются propertyDescriptor.GetValue(control), я получаю разные значения.

propertyDescriptor имеет тип PropertyDescriptor.

У кого-нибудь есть решение? Я проверил, что экземпляр объекта тот же.

+0

Ну, какие ценности вы получаете от двух разных подходов? И каков конкретный контроль? –

+1

Возможно, что более важно; откуда вы взяли PropertyDescriptor? Существуют разные способы сделать это, что может дать разные результаты ... –

ответ

1

Ну, это может зависеть от объекта. и как вы получили свой дескриптор типа. Например. это может быть пользовательский дескриптор, который мог бы вернуть что-либо. Если это так, вы можете указать метод метода GetTypedescriptor, чтобы не использовать пользовательские typedescriptors. (sry для того, чтобы не публиковать фактический код, но у меня нет IDE и я не могу вспомнить точный синтаксис).

Другим подходом было бы присвоение PropertyInfo вместо свойстваDescriptor (если остальная часть кода работает с System.Reflection.PropertyInfo).

Вы можете получить PropertyInfo от длины собственности для Stype строки, как этот

TYPEOF (строка) .GetProperty ("Length"); или если это неизвестный тип во время компиляции: obj.GetType(). GetProperty («Length»);

Если вам нужно перебрать все свойства, вызовите GetProperties.

Но все, что PropertyInfo полагается на мое предположение, что вы были бы в состоянии использовать PropertyInfo вместо PropertyDescriptor

+0

Или еще лучше ... поскольку он известен как Control ... почему бы просто не применить его для управления и использования .Location ;-p –