PropertyGrid使用

今天用了一个PropertyGrid的控件,想实现动态的改变其中属性的可见性,在网上查了好久,最后经国宝同志的指点,终于查到了,先记录下来。

 

PropertyGrid的使用方法:

新建一个类作为显示属性的对象

[DefaultPropertyAttribute("Name")]

    public class C

    {

        private string a ="";

 

        [DisplayNameAttribute("a"), ReadOnlyAttribute(true), CategoryAttribute("b"), DescriptionAttribute("c"), Browsable(true)]

        public string A

        {

            get

            {

                return a;

            }

            set

            {

                a = value;

            }

        }

}

 

PropertyGridSelectedObject赋值

propertyGridSummary.SelectedObject = new C();

便行了。

 

控制属性窗口中A的显示与否:

 

首先是下面这个函数,其实这个函数很早就查到了,但是用起就是不对。因为一用它就让所有的属性显示或者不显示,不能单独的控制一个。

 /// <summary>

        /// 设置指定对象的属性可见性

        /// </summary>

        /// <param name="target">要改变属性可见性的对象</param>

        /// <param name="propertyName">要改变的属性</param>

        /// <param name="visible">是否可见</param>

        private void SetPropertyVisible(object target, string propertyName, bool visible)

        {

            PropertyDescriptorCollection pdc = TypeDescriptor.GetProperties(target);

            PropertyDescriptor property = pdc[propertyName];

            if (property != null)

            {

                AttributeCollection ac = property.Attributes;

                Attribute attr = (BrowsableAttribute)ac[typeof(BrowsableAttribute)];

                Type attrType = attr.GetType();

                FieldInfo fld = attrType.GetField("browsable", BindingFlags.Instance|BindingFlags.NonPublic);

                fld.SetValue(attr, visible);

            }

        }

 

最后国宝说BrowsableAttribute这种叫特性,我才查到:

使用这个函数的前提是每个属性都要加[Browsable(true)]或者[Browsable(false)]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PropertyGrid是一种用于配置控件属性的控件,可以让用户方便地查看和修改对象的属性。通过给PropertyGrid控件的SelectedObject属性绑定对象,该对象的所有属性都会自动显示在PropertyGrid控件的网格中,用户可以在网格中直接进行属性的配置。 PropertyGrid控件有许多属性和事件,其中一些常用的属性包括: - SelectedObject:所绑定的单个对象 - HelpVisible:是否显示属性描述区域,对应特性Description的内容 - SelectedObjects:绑定多个对象,展示它们同名属性 一些常用的事件包括: - PropertyValueChanged:当修改PropertyGrid网格中的内容时,即当前绑定对象的值,该事件会触发 使用PropertyGrid控件时,可以选择对象,查看和修改属性描述,使用普通属性、下拉列表、自定义下拉列表、折叠列表、下拉复选框等不同的界面元素来展示属性值。 PropertyGrid控件可以帮助开发人员更方便地配置控件的属性,提高开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [C# 控件基础2——属性配置控件PropertyGrid使用详解,PropertyGrid自定义下拉框TypeConverter,Property...](https://blog.csdn.net/a1062484747/article/details/130363089)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [PropertyGrid使用](https://blog.csdn.net/Strawberry_ahh/article/details/105923864)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值