首页 > 开发 > 综合 > 正文

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

2024-07-21 02:27:08
字体:
来源:转载
供稿:网友

关键词

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;

              }

         }

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表