今天你写控件了吗?----ASP.net控件开发系列(六)
2005-05-23 09:05
471 查看
UITypeEdit
“我要红桃”
假如,你现在在做一个“扑克”控件,扑克牌有个属性--花色,你想在用户选择花色这个属性后,属性窗口呈现的不仅仅是文字,还有一个小小的花色图标来表示花色,“红桃”就有个小“红桃”图标在前面显示,“黑桃”就有个“黑桃”图标在前面显示,就像你选择其它控件的BackColor时,颜色前还有个小方色块来表示选定的颜色,多体贴人的设计啊。现在,我们就来做这件事:
public class Squeezer
[Editor(typeof(CardTypesEditor), typeof(System.Drawing.Design.UITypeEditor))]
public class CardTypes
public class CardTypesEditor : UITypeEditor
在上面的代码中,我们通过EditorAttribute来使花色类和一个Editor关联,再通过这个Editor来实现画示意小图的功能。
好了,现在你的创造力可能又在鼓动你思考一个新问题了,我不想让让用户仅仅通过一个简单的只呈现值的下拉列表(通过EnumConverter实现的)来选择属性的值,我想实现像BackColor、Dock这样的非常友善的交互给用户使用,好吧,我们来进入下一步。
CardTypes target;
CardTypesEditorControl ui;
public CardTypesUIEditor(CardTypes target)
//通过Editor能到用户操作的值的逻辑实现
public override object EditValue(ITypeDescriptorContext context, IServiceProvider sp, object value)
//窗口出现样式,可选值还有Modal,在属性后出出现一个省略号,点击弹出模式窗体或有窗口的对话框,就像CollectionEditor,
//None,不出现任何操UI,老老实实填值
public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
呵呵,是不是现在有得花样给你玩了?
在EditValue方法中用一句return UrlBuilder.BuildUrl( (IComponent) context.Instance, null, (string) value, Caption, Filter,Options)你就可以做出一个URL编辑器;用ColorEditor.ColorUI colorUI = new ColorEditor.ColorUI(this);colorUI.Start(edSvc, value);edSvc.DropDownControl(colorUI);这样的几句话就能实现一个颜色选择交互界面。(注意代码没有处理null等异常情况)
相关文章推荐
- 今天你写控件了吗?----ASP.net控件开发系列
- 今天你写控件了吗?----ASP.net控件开发系列(五)
- 今天你写控件了吗?----ASP.net控件开发系列之(一)开篇
- 今天你写控件了吗?----ASP.net控件开发系列(七)
- 今天你写控件了吗?----ASP.net控件开发系列之(二)
- 今天你写控件了吗?----ASP.net控件开发系列(三)
- 今天你写控件了吗?----ASP.net控件开发系列(四)
- 今天你写控件了吗?----ASP.net控件开发系列(八)
- asp.net 控件开发系列
- asp.net控件开发系列(四)
- asp.net控件开发系列(八)
- ASP.net控件开发系列(四)
- asp.net控件开发基础系列
- ASP.NET 控件开发系列之图片切换web控件
- ★★★【庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术系列—(5)事件和数据回发机制】★★★
- [ASP.NET开发系列]在用户控件中添加属性 -- 摘自 tigerwen01
- asp.net控件开发基础系列
- asp.net控件开发系列(九)
- (一)庖丁解牛Asp.net3.5控件和组件开发技术系列—服务器控件开发中的调试技术-郑健
- ★★★【庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术系列—教程索引】★★★