C# PropertyGrid - 如何使数组元素只读?

4
我有一个PropertyGrid,我向其中添加了一个bool值数组。这个数组本身被标记为只读,PropertyGrid也能正确识别。
但是:如果我在Grid中展开数组,所有项目都可以被用户编辑。当然,这不是我想要的。如果数组本身被标记为只读,那么它的所有元素也应该如此!
有没有办法在PropertyGrid中实现这种行为?

如果您将集合绑定到PropertyGrid,则可以将该集合索引器设置为私有属性。这样就没有人可以进行设置。 - Zenwalker
1
你的数组是只读的是什么意思?你是使用 ReadOnlyCollection 进行包装吗? - Luke Girvin
2个回答

3
你可以定义自己的TypeConverter。使用TypeConverter,您可以控制PropertyGrid显示的属性及其行为。

2

readonly关键字的作用并不是你想象的那样:

using System;

class Program {
    static readonly bool[] arr = { false, true };

    static void Main(string[] args) {
        arr[0] = true;
    }
}

是的,使用TypeConverter来改变PropertyGrid中类型的行为。或者只需给它加上[Browsable(false)]属性,因为没有人想查看布尔类型的数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接