Readonly PropertyGrid

Eri*_*tas 5 c# propertygrid readonly icustomtypedescriptor

我在我正在编写的应用程序中使用PropertyGrid,以允许用户查看并有时编辑对象的实例.有时用户可能在读/写模式下打开文件,他们可以通过属性网格对文件进行更改.在其他情况下,它们可能以只读模式打开文件,并且不能通过PropetyGrid对对象进行任何更改.我的类还具有通过实现ICustomTypeDescriptor返回的动态属性.这就是为什么我真的想利用PropertyGrid控件的内置灵活性.

似乎没有一种简单的方法将Property-grid设置为只读模式.如果我禁用PropertyGrid,这也会阻止用户滚动列表.所以我认为最好的方法是在运行时将ReadOnlyAttributes添加到属性中.还有其他方法吗?

Lar*_*rry 8

我找到了一个非常快速的解决方案,对于那些不关心属性被灰化的人来说.

TypeDescriptor.AddAttributes(myObject, new Attribute[]{new ReadOnlyAttribute(true)});
propertyGrid1.SelectedObject = myObject;
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 3

由于您正在实施,ICustomTypeDescriptor因此无需添加任何属性;您只需IsReadOnly覆盖PropertyDescriptor. ICustomTypeDescriptor我认为编写一个模仿(通过和TypeConverter)包装类型但始终返回只读实例的中间类型应该非常简单PropertyDesciptor?如果您想要一个示例,请告诉我(尽管这并不简单)。

您可能还想检查类似的东西是否提供了它的构建。