关于自定义PropertyGrid

PropertyGrid是.Net控件里比较复杂的一个,使用起来也很灵活 。

前短时间工作关系接触PropertyGrid比较多,把心得总结一下,也怕下次再用到的时候忘记:

先说自定义UI:
首先说说自定义UI使用的场合,自定义UI一般使用在PropertyGrid本身的属性编辑界面不能满足需求的时候,这时候需要把自己定义的编辑界面加入到PropertyGrid的属性编辑器里面。自定义UI基本有两种界面表现形式:下拉式(点击向下的小箭头下拉出一个编辑界面),和弹出式(出现三个小圆点的按钮,点击弹出编辑对话框)。

下面说说具体实现方法:
1. 实现自定义UI需要首先设计自定义的编辑控件,一般从UserControl或者Form集成。

2. 继承UITypeEditor类,并override方法GetEditStyle()和EditValue()。GetEditStyle()方法用于指定是下拉式还是弹出式,下拉式:return UITypeEditorEditStyle.DropDown; 弹出式:return UITypeEditorEditStyle.Modal;
EditValue()方法是实现自定义UI的关键,具体见以下代码:
public class CustomEditor : UITypeEditor
    {      
        public CustomEditor ()
        {
        }

        public override UITypeEditorEditStyle GetEditStyle(
            ITypeDescriptorContext context)
        {
            return UITypeEditorEditStyle.Modal;
        }

        public override object EditValue(ITypeDescriptorContext context,
            IServiceProvider provider, object value)
        {
            IWindowsFormsEditorService wfes = provider.GetService(
                typeof(IWindowsFormsEditorService)) as
                IWindowsFormsEditorService;

            if (wfes != null)
            {
                // 在这里根据value值初始化自定义的控件,并把编辑以后的值赋值给value参数
            }
            return value;
        }
    }

3. 设置PropertyGrid相应属性的Editor特性
[Editor(typeof(CustomEditor ), typeof(System.Drawing.Design.UITypeEditor))]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值