【问题标题】:C# PropertyGrid - How to make array elements read only?C# PropertyGrid - 如何使数组元素只读?
【发布时间】:2011-09-26 18:27:45
【问题描述】:

我有一个 PropertyGrid,我向其中添加了一个布尔值数组。数组本身被标记为只读,属性网格可以正确识别。

但是:如果我在网格中展开数组,用户可以编辑所有项目。当然这不是我想要的。如果数组本身被标记为 s ReadOnly,则它的所有元素也应如此!

有没有办法在 PropertyGrid 中实现这种行为?

【问题讨论】:

  • 如果您将集合绑定到 propertygrid,那么您可以让集合索引器将属性设置为私有。这样就没有人可以设置了。
  • 什么意思,你的数组是只读的?您是否使用 ReadOnlyCollection 包装它?

标签: c# readonly propertygrid


【解决方案1】:

您可以定义自己的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)] 属性,因为无论如何没人想查看布尔数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多