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

本文关键字:数组元素 只读 何使 PropertyGrid | 更新日期: 2023-09-27 18:09:44

我有一个PropertyGrid,我添加了一个数组的布尔值。数组本身被标记为ReadOnly,这是由属性网格正确识别的。

BUT:如果我在网格中展开数组,用户可以编辑所有项。这当然不是我想要的。如果数组本身被标记为只读,那么它的所有元素也将被标记为只读!

是否有任何方法在PropertyGrid中实现此行为?

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

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

readonly关键字不像你想象的那样工作:

using System;
class Program {
    static readonly bool[] arr = { false, true };
    static void Main(string[] args) {
        arr[0] = true;
    }
}

是的,使用TypeConverter来改变PropertyGrid中类型的行为。或者给它一个[Browsable(false)]属性,因为反正没人想看一个布尔值数组。