控件的设置模式行为ControlDesigner
写在前面:有没有发现,一些设计得好的自定义winform控件,可以在拖控件到界面时,点击右键或右上角的小图标就可以设置一些重要的属性。这是比较设置模式行为ControlDesigner来实现的,你可以在自定义控件的class上面增加一些标记来达到这个功能。下面使用ControlDesigner的派生类ParentControlDesigner来实现Ide工具中的右键设置属性功能。
Code
效果图
下图中,放着两个自定义控件SmartLine的实例,是两条直线,一条是水平的一条是垂直的,在控件上面点击右键,可以选择设置直线是水平还是垂直。使用控件右上角的小图标,也可以达到这样的效果。
源代码
事实上,你需要先对SmartLine的类,进行设置,设置它的设置模式Designer为SmartLineControlDesigner,而后者就是要介绍的源代码。设置方法如下:
[Designer("LineProject.SmartLineControlDesigner", typeof(System.ComponentModel.Design.IDesigner))]
public class SmartLine : Control
写自定义控件的Designer其实是非常的简单的,找出你要设置的主要的属性,并修改下面的代码就可以了。下面的代码是针对Orientation布局属性而设置的Designer,简单的修改之后,你就可以定义自己的Designer了。最主要的方法是override DesignerVerbCollection Verbs这个方法是通过ControlDesigner继承下来的。重写时注意增加事件委托就行了。基本上,你可以抄下面的代码就可以了。而new SmartLine Component部分修改为你需要使用的控件。
![](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)