譯者:
經常在論壇上有人問如果寫自己的控制項
,如何改造系統已經有的控制項
. 這篇文章對這個問題作了非常清楚的描述
. 這是在
codeproject
上頗受好評的一篇入門級的文章.
簡介
這篇文章簡明扼要的介紹了在
.net framework
中如何來產生自己的定製控制項.
我們講述如果產生乙個定製控制項
,然後在乙個應用程式中使用它
. 我在這個控制項中加入了自己的一些屬性
,我們可以看一下在
c#中是如果實現的.
生成控制項
在visual studio .net 中,
用windows
控制項庫來作為模板
,生成乙個新的專案
.專案的名稱為
ctlcutebutton.
首先麼做的就是要修改
cutebutton
的父類修改下面這行:
public class cutebutton : system.windows.forms.control 改為
: public class cutebutton : system.windows.forms.button
現在我們的控制項就是從
system.windows.forms.button
類來繼承了.
現在讓我們給這個控制項加一些屬性,在
cutebutton
類中加入下面的**就可以完成.
private color m_color1 = color.lightgreen;//
第一種顏色
private color m_color2 = color.darkblue;//
第二種顏色
private int m_color1transparent = 64; //
第一種顏色的透明度
private int m_color2transparent = 64; //
第二種顏色的透明度
set }
public color cutecolor2
set }
public int cutetransparent1
set }
public int cutetransparent2
set }
上面的invalidate()
方法是用來在設計和使用時用來重新整理控制項的內部.
重寫父類的
paint
事件// calling the base class onpaint
base.onpaint(pe);
// create two semi-transparent colors
color c1 = color.fromargb(m_color1transparent , m_color1);
color c2 = color.fromargb(m_color2transparent , m_color2);
brush b = new system.drawing.drawing2d.lineargradientbrush(clientrectangle,
c1, c2, 10);
pe.graphics.fillrectangle (b, clientrectangle);
b.dispose();
現在我們可以編譯這控制項了
,可以使用快捷鍵
++.下面是全部的**:
using system;
using system.collections;
using system.componentmodel;
using system.drawing;
using system.data;
using system.windows.forms;
namespace ctlcutebutton
set }
public color cutecolor2
set }
public int cutetransparent1
set }
public int cutetransparent2
set }
public cutebutton()
protected override void onpaint(painteventargs pe)
} }
如何來使用你的控制項
開啟vs.net,
用winows
應用程式模板來產生乙個新的專案
.在新的專案中
,你可以把上面編譯過的控制項新增到工具箱中
. 在工具箱中,右鍵
,定製工具箱
,然後新增
.net控制項,
然後瀏覽
,選中控制項的
dll檔案
(在我們的例子中
,這個檔案是
ctlcutebutton/bin/debug/cutebutton.dll
).這是cutebutton控制項就會出現在工具箱中
.你可以嘗試改變控制項的一些屬性,比如
cutecolor1
, cutecolor2
, cutetransparent1
, cutetransparent2.
現在,你就完全知道如果開發和使用自定義控制項了吧
.祝你好運.
作者blog:http://blog.csdn.net/theares/
如何自定義控制項
1 自定義屬性的宣告與獲取 1.1分析需要的自定義屬性 1.2在res values attrs.xml中定義自定義屬性 1.3在layout的xml檔案中宣告使用 1.4在自定義view中的構造方法中獲取使用 2 測量onmeasure 2.1求出子檢視的個數 通過getchildcount 方法...
如何使用xib來自定義控制項
1,如何封裝乙個模型 1.1,建立cocoa檔案,在.h檔案中定義物件的屬性,並宣告物件構造方法和類的構造方法 1.2,在.m檔案中實現.h檔案中宣告的方法 2,如何使用xib檔案自定義元件,such自定義cell 2.1,建立xib檔案,並設計好自己想要的元件效果。2.2,給xib的class屬性...
C 自定義控制項和自定義事件
今天在專案開發的過程中,因為好幾個頁面都要用到同乙個分類控制項,就想著把它做成乙個自定義控制項,然後隨託隨用。在網上找了些列子,自定義控制項的寫法不用多說,主要說一下,如何將控制項的事件,封裝到自己定義的控制項的自定義事件裡面。這裡同時也當作對自定義事件的乙個複習吧。首先控制項是乙個由treelis...