惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
博客园_首页
H
Help Net Security
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
The Cloudflare Blog
腾讯CDC
Jina AI
Jina AI
Last Week in AI
Last Week in AI
月光博客
月光博客
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
爱范儿
爱范儿
N
Netflix TechBlog - Medium
F
Fortinet All Blogs

博客园 - Jrong

SIM卡卡号(ICCID)的含义 堪比Kinect的视频追踪算法 [转]软件项目的核心风险 [转]Android Google Calendar 日曆同步舊資料 .NET开源代码 .NET CF如何使Form全螢幕不顯示上方工作列(TaskBar) ManagedOpenGLES iPhoneBrowser 制表板式 [转]隐藏窗口右上角按钮 [转]解决VS2008 开发Windows Mobile 项目生成速度慢的问题 [转]在安装IIS时如果老提示无法复制convlog.exe、iisadmin.mfl等文件 [转]反射 [转]语音合成与识别技术在C#中的应用 [转]Creating Managed Today Screen Items 开源代码搜索利器Koders DirectShow.NET笔记 [转]在.NET CF2.0中调用DirectShow来处理视音频数据 VS2005里自定义控件设计时语法
[转]控件的设置模式行为ControlDesigner
Jrong · 2009-02-02 · via 博客园 - Jrong

写在前面:有没有发现,一些设计得好的自定义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

    }
}