当以不同方式访问时,Windows控件返回不同的值

时间:2009-05-29 11:38:12

标签: .net winforms system.componentmodel

我有一个control,托管在DesignSurface

control.Location访问其位置属性时,propertyDescriptor.GetValue(control)访问它时,我会得到不同的值。

propertyDescriptor的类型为PropertyDescriptor

有没有人有解决方案?我已经检查过对象实例是否相同。

1 个答案:

答案 0 :(得分:1)

那可能取决于对象。以及如何获得类型描述符。例如。它可能是一个自定义描述符,可以返回任何东西。如果是这种情况,您可以为GetTypedescriptor方法提供不使用自定义类型描述符的信息。 (sry没有发布实际代码,但我没有可用的IDE,也无法记住确切的语法)。

另一种方法是使用PropertyInfo而不是propertyDescriptor(如果其余代码使用System.Reflection.PropertyInfo)。

您可以像这样

获取stype字符串的Property Length的PropertyInfo

typeof运算(字符串).GetProperty( “长度”); 或者如果它是在编译时未知的类型,如下所示: 。obj.GetType()的getProperty( “长度”);

如果需要遍历所有属性,请调用GetProperties。

但是所有PropertyInfo都依赖于我的猜测,你可以使用PropertyInfo而不是PropertyDescriptor