Элемент управления Windows возвращает разные значения при доступе по-разному - PullRequest
1 голос
/ 29 мая 2009

У меня есть элемент управления , размещенный на DesignSurface .

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

propertyDescriptor имеет тип PropertyDescriptor .

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

1 Ответ

1 голос
/ 29 мая 2009

Ну, это может зависеть от объекта. и как вы получили свой дескриптор типа. Например. это может быть пользовательский дескриптор, который может возвращать что угодно. В этом случае вы можете предоставить информацию о методе GetTypedescriptor, чтобы не использовать пользовательские дескрипторы типов. (прошу прощения за то, что не опубликовал реальный код, но у меня нет доступной IDE и я не могу вспомнить точный синтаксис).

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

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

TypeOf (строка) .GetProperty ( "длина"); или если это тип неизвестен во время компиляции, как это: . Obj.GetType () GetProperty ( "длина");

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

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

...