铁建广场:WinForm控件开发总结(八)
来源:百度文库 编辑:九乡新闻网 时间:2024/05/16 03:39:03
WinForm控件开发总结(八)-为属性提供弹出式编辑对话框
2009-07-15 来自:博客园 字体大小:【大 中 小】- 摘要:本文介绍怎样为自定义控件属性提供弹出式编辑对话框。
在这种情况下,我们就需要提供更为复杂的编辑方式,比如属性编辑对话框,你还记得Font对话框吗?现在我们就来看看如何实现更复杂的属性编辑。复杂的属性编辑器分为两种类型,一种是弹出式模态对话框属性编辑器,一种式下拉式属性编辑器。如果你还没有感性的认识的话,可以观察一下TextBox控件的属性,Font属性的编辑器是模态对话框属性编辑器,Dock属性的编辑器是下拉式属性编辑器。
接下来我们来制作一个模态对话框编辑器,虽然Scope属性并不复杂,但是为了演示的方便,我们还是用它来做例子。
首先我们要做一个用来编辑属性的对话框,在对话框的构造函数里传入要编辑的属性的值。在对话框类里,声明一个Scope类型的私有变量_scope用以保存传入和编辑后的值。还要增加一个Scope属性,以便外部环境能够获取编辑后的结果。对话框的外观如下:
在这个对话框里,我们要把OK按钮的DialogResult属性设为OK(当点击OK按钮时,模态对话框关闭,并返回DialogResult.OK),将Cancel按钮的DialogResult属性设为Cancel(当点击OK按钮时,模态对话框关闭,并返回DialogResult.OK)。另外我们要对用户输入的值做验证,以保证Scope的min和max值都是Int32类型。下边是对话框的代码:
每一个属性的编辑器都是直接或者间接的派生于UITypeEditor。开发环境从来也不会直接调用我们编写的模态对话框来编辑属性,而是调用UITypeEditor的某些虚方法,所以我们还必须提供一个派生于UITypeEditor的类来与开发环境通信。下边的代码实现了Scope的编辑器:
在这个类里,我们重写了两个方法,一个是GetEditStyle,在这个方法里,我们通知开发环境,属性的编辑器是一个模态对话框。另一个方法是EditValue,这是最核心的方法,在这个方法里,我们通过上下文环境获得了正在编辑的控件的实例,并将实例的Scope属性传递给属性编辑对话框,显示对话框供用户编辑属性的值,用户编辑完属性的值,并关闭对话框,这时,我们从对话框里获取编辑后的结果反会给开发环境。 编写完Editor,我们就要将它应用到MyListControl的Scope属性上,现在的Scope属性定义如下:
当我们点击这个按钮后,弹出了属性编辑的对话框,如图:
我们在对话框里编辑属性的值,并点击OK关闭对话框,现在Scope属性值已经被修改了。
WinForm控件开发总结(八)
WinForm控件开发总结(二)
WinForm控件开发总结(四)
WinForm控件开发总结(十)
WinForm控件开发总结(十一)
c# WinForm开发 DataGridView控件的各种操作总结
C# WinForm开发系列 - 介绍一些开源的第三方控件
C# WinForm 给某动态控件设置 气泡状提示
我dotNET 所以我绚丽 (WinForm控件小选)
使用C#开发ActiveX控件
ASP.NET 控件开发速成教程:生成复合控件
ASP.NET 2.0服务器控件开发之控件样式
MFC控件使用总结——CListCtrl
XML开发笔记 总结
如何开发web带参数的自定义控件
开发ActiveX控件使用MFC和ATL之比较
CodeSmith开发系列资料总结
usb驱动程序开发技术总结
重温delphi之:如何快速开发原生ActiveX控件 - 菩提树下的杨过.Net - 博...
八年级下学期班务总结 >>计划总结
symbian开发总结 - 移动平台 / Symbian
手机网站开发必修课[2009总结版]
八年级历史教学工作总结
八年级历史教学总结