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

最近项目需要用到自定义控件的属性需要多选,我们知道默认的属性一般都是下拉输入之类的,也有多选,但是我需要的是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)
                {
                    //保存值
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于C语言的开发主要有以下几个方面的优势和特点: 1. 简洁高效:C语言是一种结构化的语言,代码简洁易懂,可以提高开发效率。C语言还可以直接访问硬件,具有高效的执行速度,适合开发需要高性能的应用程序。 2. 可移植性强:C语言的代码可以在不同的操作系统和平台上移植,这使得C语言成为一种广泛应用的语言。开发人员只需要针对不同的目标平台进行少量的调整,就可以让代码在不同的系统上运行。 3. 强大的功能:C语言提供了丰富的函数库和工具,开发人员可以方便地使用这些功能来实现各种复杂的任务。同时,C语言也支持低级别的编程,可以直接访问内存和硬件,满足一些特殊需求的开发。 4. 开发广泛应用:由于C语言的高效性和可移植性,许多大型的软件项目都是基于C语言进行开发的。例如操作系统、编译器、数据库等。此外,C语言还是嵌入式系统开发的首选语言。 5. 学习资源丰富:C语言作为一门非常经典和普遍的编程语言,有大量的学习资源可供参考和学习。从书籍到在线课程,开发者可以轻松地找到学习资料,加快掌握C语言的速度。 综上所述,基于C语言的开发具有简洁高效、可移植性强、功能强大、应用广泛以及学习资源丰富等优势和特点。这些特点使得C语言在计算机编程领域有着广泛的应用和持续的发展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值