代码之家  ›  专栏  ›  技术社区  ›  tgandrews

以编程方式隐藏PropertyGrid中的属性

  •  3
  • tgandrews  · 技术社区  · 16 年前

    到目前为止,我已经尝试过在处理事件后访问属性,但是ReadOnly和IsBrowsable属性是只读的。

    propertygrid有一个属性BrowsableAttributes,它接受一个属性列表,但只能起负作用,不能执行or-only-and。提供属性集合;category-'test'和isbrowsable-true;返回两者都匹配的属性集合,由于我无法提供多个AttributeCollections,因此无法使搜索变得足够具体以隐藏必要的属性,同时使其他属性可见。

    在过去的几个小时里,我一直在想,一定有一个更简单的方法。

    2 回复  |  直到 10 年前
        1
  •  13
  •   t0mm13b    13 年前

    是否尝试将此属性应用于属性:

    [Browsable(false)]
    public object SomeProperty{
    }
    

    SomeProperty 不会出现在propertygrid上。

        2
  •  4
  •   Paul Sainsbury    16 年前

    要想在这里做你想做的事情,你需要在你的类上实现ICustomTypeDescriptor,这是PropertyGrid用来查询你的类/对象以找出在PropertyGrid中显示哪些项、如何编辑它们、它们应该具有什么类别/描述等等。

    它可能会变得相当混乱,但在代码项目中似乎有一组预先编写的helper类 http://www.codeproject.com/KB/grid/PropertyGridDynamicProp.aspx .

    我开始编写代码项目中给出的代码的我自己的版本,遇到问题后,我在谷歌上搜索了一下,找到了代码项目链接。看来他们比我做得好多了。我已经下载了代码,它似乎运行得很好。