- 屬性:我們做.net開發的,通常都會用鼠標在屬性框裏面設計控件,所以,一般你看到拼命敲鍵盤的,不要以爲看到了代碼超人,轉過去看清楚點,在Q着呢!.net的設計器很好,所以不要什麼都寫在代碼裏面,最重要要做到設計器可視化!
- 我們首先建立一個WindowApplication,在建一個WindowsControlLibrary,一般控件和窗口最好分開,目的當然是爲了以後的可重用性了。
- 這裏我們以一個MyButton控件爲例子,在WindowsControlLibrary裏面建立一個叫MyButton的UserControl,上面放一個PictrueBox,再放一個Lable,如下圖:
- 我們假設要做一個屬性,用來設置下面文字的文本和顏色,代碼如下:[Description("按鈕的文本顯示")]
public string MyButtonText
{
set
{
this.label1.Text = value;
}
get
{
return this.label1.Text;
}
}[Description("按鈕的文本顏色")]
public Color MyButtonTextColor
{
set
{
this.label1.ForeColor = value;
}
get
{
return this.label1.ForeColor;
}
} - 事件:事件是C#一個很重要的概念,因爲他是完全面向對象的開發語言,所以在需要對象之間的調用和回調的各種方式,而事件就是最常見的回調機制了。下面,我們爲這個控件寫一個例子MouseOver的事件,當鼠標放在該控件時發生。public delegate void dMouseOver(System.DateTime mouseOverTime);
public event dMouseOver MouseOver;
private bool MouseOverIsSend = false;
private void MyButton_MouseEnter(object sender, EventArgs e)
{
if (MouseOver != null)
{
if (!MouseOverIsSend)
{
this.MouseOver(DateTime.Now);
this.MouseOverIsSend = true;
}
}
}
private void MyButton_MouseLeave(object sender, EventArgs e)
{
MouseOverIsSend = false;
}
把label的MouseEnter和PictureBox的MouseEnter事件都下拉,選擇上面這個事件,這樣,我們在設計器裏面又能看到我們定義的事件羅!
WinForm界面開發論(一)控件基本論
用.net開發windows程序,離不開控件的編寫,微軟的那堆控件裏面,只提供了一些比較基本和典型的界面控件,對於現在五彩繽紛的軟件,默認的控件集已很難滿足用戶的需求。既然是這樣,讓我們自己動手來創造自己的控件吧!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.