南山狒狒

专注WinCE和GIS开发,提升ArcGIS和DirectShow,涉及过BizTalk,有Delphi经历
09年后的路,应该好好走了。

  博客园  :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理
写在前面:有没有发现,一些设计得好的自定义winform控件,可以在拖控件到界面时,点击右键或右上角的小图标就可以设置一些重要的属性。这是比较设置模式行为ControlDesigner来实现的,你可以在自定义控件的class上面增加一些标记来达到这个功能。下面使用ControlDesigner的派生类ParentControlDesigner来实现Ide工具中的右键设置属性功能。

效果图
下图中,放着两个自定义控件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部分修改为你需要使用的控件。

Code

namespace LineProject
{
    /// <summary>
    /// 直线描述
    /// </summary>
    public class SmartLineControlDesigner : ParentControlDesigner
    {

Code

    }
}

posted on 2009-02-02 15:03  Jrong  阅读(789)  评论(0编辑  收藏  举报