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

** 自己动手用 c# ** ** 写控件 **

willsound ( [email protected]

关键词

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 ;

}

}

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

Published At
Categories with Web编程
Tagged with
comments powered by Disqus