【发布时间】:2013-07-29 09:02:50
【问题描述】:
我继承了PropertyDescriptor 类来提供某种“动态”属性。我正在向 PropertyDescriptor 添加一些属性。这完美地工作。
在PropertyGrid 中显示对象时,ReadOnlyAttribute 有效,但EditorAttribute 无效!
internal class ParameterDescriptor: PropertyDescriptor {
//...
public ParameterDescriptor(/* ... */) {
List<Attribute> a = new List<Attribute>();
string editor = "System.ComponentModel.Design.MultilineStringEditor,System.Design";
//...
a.Add(new ReadOnlyAttribute(true)); // works
a.Add(new DescriptionAttribute("text")); // works
a.Add(new EditorAttribute(editor, typeof(UITypeEditor))); // doesn't work!
//...
this.AttributeArray = a.ToArray();
}
}
显示的对象使用继承的TypeConverter:
public class ParameterBoxTypeConverter: TypeConverter {
public override bool GetPropertiesSupported(ITypeDescriptorContext context) {
return true;
}
public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes) {
List<PropertyDescriptor> desc = new List<PropertyDescriptor>();
//...
ParameterDescriptor d = new ParameterDescriptor(/* ... */);
desc.Add(d);
//....
return new PropertyDescriptorCollection(desc.ToArray());
}
我被卡住了,因为 PropertyGrid 根本没有显示任何东西(我希望属性值处有一个“...”)。而且好像没办法调试!
那么我怎样才能找到这里的问题呢?
有没有办法调试到 PropertyGrid 等?
【问题讨论】:
-
你没有用
a显示你然后做什么...你把它传递给基础ctor吗?还是...? -
@MarcGravell:请看我的编辑。
标签: c# properties propertygrid propertydescriptor