最近项目需要用到自定义控件的属性需要多选,我们知道默认的属性一般都是下拉输入之类的,也有多选,但是我需要的是checkbox,没有现成的,百度发现微软有提供接口UITypeEditor ,继承这个基类就可以搞定了。废话不多说 了,下面来具体代码说明。
首先来一段官方资料:
UITypeEditor 类 提供可用于设计值编辑器的基类,这些编辑器可提供用户界面 (UI),用来表示和编辑所支持的数据类型的对象值。
UITypeEditor 类提供了一个基类,您可以从其派生或将其扩展,来为设计时环境实现一个自定义类型编辑器。通常,您的自定义类型编辑器与 PropertyGrid 控件进行交互。
在文本框值编辑器不足以有效地选择某些类型的值的情况下,自定义类型编辑器非常有用。
若要实现自定义设计时 UI 类型编辑器,必须执行下列步骤:
定义一个从 UITypeEditor 派生的类。
通过执行下列步骤,可以为在“属性”窗口中绘制值的表示形式添加附加支持:
重写
重写
-
如果编辑器应具有初始化行为,则重写 UITypeEditor 构造函数方法。 下面是我写的checkbox属性下拉框的例子:
1.
首先建立一个usercontrol 以下是源码 :
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) { if (keyData == Keys.Escape) { _oldfundstatus = _newfundstatus; canceling = true; } return base.ProcessDialogKey(keyData); } // 离开控件保存值 private void PropertyFundStatus_Leave(object sender, EventArgs e) { if (!canceling) { //保存值