当前位置:  开发笔记 > 编程语言 > 正文

以编程方式隐藏PropertyGrid中的字段

如何解决《以编程方式隐藏PropertyGrid中的字段》经验,为你挑选了1个好方法。

运用

 _

关于一个类的声明(它是另一个类的属性),由一个数字属性组成.

我简单地加载了这个类的一个实例......

PropertyGrid1.SelectedObject = oColumn

显然我不想在代码中手动构建propertygrid,我知道如何做到这一点.

但这是问题所在.根据属性的值,某些其他属性不应该是可见的,就像我使用了

 _

属性声明中的属性.

无论如何以编程方式执行此操作,而无需手动处理属性网格的所有构建>



1> 小智..:

实际上这完全有可能.第一种也是最简单的方法是设置网格的BrowsableAttributes属性:

propGraph.BrowsableAttributes = new AttributeCollection(
    new Attribute[] 
    { 
        new CategoryAttribute("Appearance")
    });

这将过滤掉与您提供的属性类型不匹配的所有属性.不幸的是,这是一个正滤波器而不是负滤波器,这使得它不太有用恕我直言.

其次,同样简单,您可以在要在PropertyGrid中显示的对象周围创建一个简单的包装器,并重新定义要隐藏的任何属性/ etc.作为passthrough属性:

public class MyDerivedControl : public TextBox
{
    [Browsable(false)]
    [Category("MyCustomCategory")]
    public new bool Enabled
    {
         get { return base.Enabled }
         set { base.Enabled = value; }
    }
}

将其弹出到属性网格中,将隐藏Enabled属性.

第三,你可以自定义PropertyGrid本身并进入类型描述符等世界,但如果你想要做的就是隐藏一些属性,这就太过分了.

希望这可以帮助.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有