C#控件开发---控件属性编辑器

本文介绍了如何在C#中为属性窗口创建一个自定义编辑器,以支持Checkbox列表形式编辑属性值。通过重写GetPaintValueSupported、PaintValue方法以及UITypeEditor构造函数,实现了自定义UserControl的编辑功能。详细步骤包括创建UserControl、处理键盘事件、保存和加载属性值,以及使用TypeConverter和UITypeEditor进行类型转换和编辑样式设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目需要用到自定义控件的属性需要多选,我们知道默认的属性一般都是下拉输入之类的,也有多选,但是我需要的是checkbox,没有现成的,百度发现微软有提供接口UITypeEditor ,继承这个基类就可以搞定了。废话不多说 了,下面来具体代码说明。
首先来一段官方资料:
UITypeEditor 类 提供可用于设计值编辑器的基类,这些编辑器可提供用户界面 (UI),用来表示和编辑所支持的数据类型的对象值。 
UITypeEditor 类提供了一个基类,您可以从其派生或将其扩展,来为设计时环境实现一个自定义类型编辑器。通常,您的自定义类型编辑器与 PropertyGrid 控件进行交互。 
在文本框值编辑器不足以有效地选择某些类型的值的情况下,自定义类型编辑器非常有用。
若要实现自定义设计时 UI 类型编辑器,必须执行下列步骤:
定义一个从 UITypeEditor 派生的类。
重写 EditValue 方法以处理用户界面、用户输入操作以及值的分配。
重写 GetEditStyle 方法,以便将编辑器将使用的编辑器样式的类型通知给“属性”窗口。
 

通过执行下列步骤,可以为在“属性”窗口中绘制值的表示形式添加附加支持:

重写 GetPaintValueSupported 方法以指示编辑器支持显示值的表示形式。

重写 PaintValue 方法以实现该值的表示形式的显示。

  •  如果编辑器应具有初始化行为,则重写 UITypeEditor 构造函数方法。

    下面是我写的checkbox属性下拉框的例子:

    1.  首先建立一个usercontrol

    C#控件开发---控件属性编辑器

    以下是源码 :

     public partial class PropertyFundStatus : UserControl
        {
            private bool canceling;
            private FundStatus _oldfundstatus;
            private FundStatus _newfundstatus;
            public PropertyFundStatus(FundStatus fundstatus)
            {
                _oldfundstatus = fundstatus;
                _newfundstatus = fundstatus;
                InitializeComponent();
            }

            public FundStatus FundStatus
            {
                get { return _newfundstatus; }
            }

            protected override bool ProcessDialogKey(Keys keyData) //重写键盘接收处理ESC
            {
                if (keyData == Keys.Escape)
                {
                    _oldfundstatus = _newfundstatus;
                    canceling = true;
                }
                return base.ProcessDialogKey(keyData);
            }
            // 离开控件保存值
            private void PropertyFundStatus_Leave(object sender, EventArgs e)
            {
                if (!canceling)
                {
                    //保存值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值