自己動手用c#寫控制元件(上) (轉)

worldblog發表於2007-12-12
自己動手用c#寫控制元件(上) (轉)[@more@]

自己動手用寫:namespace prefix = o ns = "urn:schemas--com::office" />

 

 willsound(willsound@163.com)

 

關鍵詞

c#,,控制元件,GDI+

 

我平時比較喜歡使用,小生不才,我隨然喜歡delphi,平時開發(至少現在)多用delphi,但是不怕各位高手,我沒有用delphi寫過控制元件,雖然原理上知道,但總感覺不知無從下手:L

但是自從接觸了c#,她哪優美的身姿(程式碼風格),風騷而不放縱的性格(對面向的體現比較好,要比delphi強),深深打動了我。經過一段時間的操練,我發現在開發控制元件及上(別的方面,小生我不敢妄斷),其簡便性真令我耳目一新。怎麼樣,試一把吧.J

對了,我的開發平臺是 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章