问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C# 遍历控件属性,针对性隐藏。

发布网友 发布时间:2022-05-12 17:01

我来回答

1个回答

热心网友 时间:2023-10-14 21:26

解决方案:为了实现只显示所需属性,我创建了一个派生自CustomTypeDescriptor的类CustomObjectWrapper,这个类的BrowsableProperties属性为你需要显示的控件属性,在构造函数中进行了设置,我这里设置的是Text和BackColor,然后在窗体的后台代码的Form_Load事件中实例化一个CustomObjectWrapper类,将你需要的设置的控件在其构造函数中传入,并赋给PropertyGrid的SelectedObject 属性。CustomObjectWrapper类:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test
{  
    public class CustomObjectWrapper : CustomTypeDescriptor
    {
        public object WrappedObject { get; private set; }
        public List<string> BrowsableProperties { get; private set; }
        public CustomObjectWrapper(object wrappedObject)
            : base(TypeDescriptor.GetProvider(wrappedObject).GetTypeDescriptor(wrappedObject))
        {
            WrappedObject = wrappedObject;
            BrowsableProperties = new List<string>() { "Text", "BackColor" };
        }
        public override PropertyDescriptorCollection GetProperties()
        {
            return this.GetProperties(new Attribute[] { });
        }
        public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
        {
            var properties = base.GetProperties(attributes).Cast<PropertyDescriptor>()
                                 .Where(p => BrowsableProperties.Contains(p.Name))
                                 .Select(p => TypeDescriptor.CreateProperty(
                                     WrappedObject.GetType(),
                                     p,
                                     p.Attributes.Cast<Attribute>().ToArray()))
                                 .ToArray();
            return new PropertyDescriptorCollection(properties);
        }
    }
}

Form的Load事件:

private void Form1_Load(object sender, EventArgs e)
{
this.propertyGrid1.SelectedObject = new CustomObjectWrapper(this.textBox1);
}

运行界面效果如下:

追问谢谢您。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 黑皮花生的选育方法 控件的tag属性到底有什么用 黑花生什么时候种植 VB中所有控件都具有的属性是什么 如何知道vc6里面各个控件的属性方法的详细说明 黑花生种植问题? 如何修改控件属性 VC++ 什么叫智齿??? 东医堂瘦身贴怎么样东医堂瘦身贴管用吗东医堂瘦身贴是骗人的吗 对控件的属性设置有什么方法 VB中控件共有的属性是什么 智齿是什么样的?何为智齿。 C#修改控件属性的方法有哪几种? html页面布局,我想使页面分左右两块,每一块都有自己的滚动条 小孩用什么洗发水和沐浴露比较好 二手iPhone最全验机方法 如何判断是否正品 二手苹果手机最详细的验机流程 买二手的苹果手机怎么验机呢? 诺必行婴幼儿青蒿修护膏能治湿疹吗? 诺必行婴幼儿青蒿修护膏能治疗宝宝湿疹不? 什么样的地都能种黑花生吗 黑花生南方可以种吗? 《人生大事》展现温情故事,剧中演员你最喜欢谁? 哪里这个小吃我想去考察一下这个是什么玉米饼这个病? 朱一龙新片《人生大事》又糙又柔情,他演过的哪个角色你印象最深? 《人生大事》预热,全新花絮出炉,朱一龙在预告中出现了哪些暖心举动? 朱一龙的《人生大事》与《入殓师》类似,是否值得一看? 朱一龙殡葬题材新片《人生大事》开机,他在剧中饰演的是什么角色? 陇县关山草原管委会主任级别 陇县有那些乡镇? 中午吃了一个好利来的半熟芝士挞,和一碗深井玫瑰糍粑冰粉,会不会太多了?晚上喝一瓶酸奶可以消食吗? 《人生大事》将于4月2日在全国范围内上映,这部电影的演员阵容怎么样? 朱一龙《人生大事》聚焦殡葬行业,导演是用怎样罕见的角度讲出身后事的? 好利来的半熟芝士值得一试吗? 小童星杨恩又特别出演《人生大事》,朱一龙在片场是如何与她相处的? 你觉得朱一龙在电影《人生大事》中的表现怎么样? 新电影《人生大事》官宣开机,有着怎样的演员阵容? 《人生大事》朱一龙与杨恩又上演对手戏,小演员杨恩又能接住前辈的戏吗? 好利来的半熟芝士好吃吗,可以做代理吗? 由朱一龙主演的电影《人生大事》定档,你对这部影片有何期待?