自己动手用c#写控件(上) (转)

本文介绍如何使用C#创建自定义控件,通过继承Button控件并添加渐变背景、图案填充等功能。从环境搭建到代码实现,一步步引导读者完成控件开发。
自己动手用c#写控件(上) (转)[@more@]

自己动手用C#控件XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

 

 willsound(willsound@163.com)

 

关键词

c#,.NET,控件,GDI+

 

我平时比较喜欢使用Delphi,小生不才,我随然喜欢delphi,平时开发(至少现在)多用delphi,但是不怕各位高手笑话,我没有用delphi写过控件,虽然原理上知道,但总感觉不知无从下手:L

但是自从接触了c#,她哪优美的身姿(代码风格),风骚而不放纵的性格(对面向对象的体现比较好,要比delphi强),深深打动了我。经过一段时间的操练,我发现在开发控件及组件上(别的方面,小生我不敢妄断),其简便性真令我耳目一新。怎么样,试一把吧.J

对了,我的开发平台是windows 2000 server+.vs.net 正式版

我所实现的这个控件,是从窗体控件Button继乘的,能够实现渐变背景,实现图案及纹理填充文字.

好了,我们开在开始吧

1 首先打个vs.net

2在“文件”菜单中,指向“新建”,然后选择“项目”以打开“新建项目”对话框。从“C# 项目”列表中选择“Windows 控件库”项目模板,然后在“名称”框中键入LinearGradientButtonLib,然后点确定。

3 在解决方案资源管理器中,右击 UserControl1.cs,并从快捷菜单中选择“查看代码”。

4 找到 class 语句 public class UserControl1,将 UserControl1 更改为 LinearGradientButton以更改组件的名称。找到构造函数 public UserControl1(),将它更改为 public LinearGradientButton ()

5 在 Class 语句,将该控件从 System.Windows.Forms.UserControl 继承的类型更改为 System.Windows.Forms.Button。这允许继承的控件继承 Button 控件的所有功能。

6 在解决方案资源管理器中,单击 UserControl1.cs,并在“属性”窗口中,将 FileName 属性更改为LinearGradientButton.cs.

好了,到现在工作就告一段落了,下面的工作,是向咱们的控件添加属性了。喝口水,继续!

先加上名字空间using System.Drawing.Drawing2D;

1找到 class 语句。在紧靠 { 的后面键入下面的代码:

private Color froColor; //渐变前景色

    private Color backColor;//渐变背景色

    private bool isUseFloat;//是否使用角度转变

    private float angle;  //放置角度

    private LinearGradientMode mode;//设定渐变的角度

    private HatchStyle hatchStyle; //设定文本的填充图案

    private bool isUseStyle;//设定是否用图案填充图案

 

上面这些是我们控件需要的私有域,下面开始为每个私有域做它们对应的属性.在以上代码的下面,写入以下代码:

  [Description("设定按钮渐变的前景色"),Category("Appearance")]

  public Color FrontColor

  {

    get

  {

    return froColor;

  }

    set

  {

    froColor=value;

  }

  }

    [Description("设定按钮渐变的背景色"),Category("Appearance")]

  public Color BackGroundColor

  {

    get

  {

    return backColor;

  }

    set

  {

    backColor=value;

  }

  }

    [DefaultValue(false),Description("设定是否人工设定角度")]

  public bool UseFloat

  {

    get

  {

    return isUseFloat;

  }

    set

  {

    isUseFloat=value;

  }

  }

    [DefaultValue(false),Description("设定是否使用图案填充文本")]

  public bool UseStyle

  {

    get

  {

    return isUseStyle;

  }

    set

  {

    isUseStyle=value;

  }

  }

    [DefaultValue(0),Description("定义渐变方向的角度,以度为单位从 X 轴顺时针测量。 "),Category("Appearance")]

  public float Angle

  {

    get

  {

    return angle;

  }

    set

  {

    angle=value;

  }

  }

    [DefaultValue(0),Description("当UseFloat设为false时,设定渐变方向。 "),Category("Appearance")]

  public LinearGradientMode Mode

  {

    get

  {

    return mode;

  }

    set

  {

    mode=value;

  }

  }

    [DefaultValue(false),Description("设定文本要填充的图案"),Category("Appearance")]

  public HatchStyle FillStyle

  {

    get

  {

    return hatchStyle;

  }

    set

  {

    hatchStyle=value;

  }

  }

好了,我们将控件的属性设计好了,下面就要我们写事件了.


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-991589/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-991589/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值