1. 程式人生 > 程式設計 >C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

前言

C#本身提供了很強大的控制元件庫,但是很多控制元件庫的功能只是一些基本的功能,就比如最簡單的按鈕,C#提供了最基礎的按鈕使用方法,但是如果要增加一些功能,比如按鈕按下要一個圖片,彈起要另一個圖片這樣的工作。當然,我們可以對相關按鈕在點選函式中進行更改其背景圖片,但是這對於大量的按鈕呼叫來說十分不方便,程式碼重用率相當的高,會導致使用上的卡頓,在這種情況下,我們可以將這個功能封裝起來,這樣每次呼叫起來就很方便,也節省了程式碼的重用率。

那麼如何將上述的那麼一個簡單的功能封裝起來呢,我們首先考慮到的便是按鍵的屬性,我們可以在相關按鍵中新增新的屬性來完成這一步操作。

首先先建立一個使用者類庫:

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

然後再該類庫下新增一個新的元件:

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

在元件中我們需要首先繼承Button類

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

然後需要新增新的屬性供新的控制元件使用,這裡我們新增四個屬性:1、按鈕按下的圖片 2、按鈕開啟時的圖片 3、按鈕關閉時的圖片 4、該按鈕是單次點選型還是開光狀態型的模式選擇。

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

在該部分,首先需要定義儲存預設狀態的量,如上圖所示,儲存各個圖片的預設值為null。Description引數為屬性的說明註釋,Category屬性為當前該屬性所屬的類,下面定義的函式為將使用者選擇的引數進行返回和獲取的一個過程,使用者定義的屬性名即函式名。

函式體為常見的{get;set;}形式:

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

該部分將使用者選擇的引數賦值給之前定義的圖片檔案,至此為止屬性已經簡單的新增完畢,如將該檔案編譯得到的dll檔案匯入庫中進行使用,我們會發現,拖出來的按鈕控制元件下面已經多了上面定義的所有屬性。

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

但是這些屬性還並沒有用,只是簡單的進行了賦值,要讓這些屬性進行動作,需要在按鈕中新增新的事件。這裡我們添加了兩個事件,一個是滑鼠按下的事件,還有一個滑鼠彈起的按鍵:

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

上面的部分就是簡單的一些按鈕屬性設定,比如將按鈕背景變透明之類的。

新增的新的事件中,我們需要對按鈕的相應動作進行相應,在按下時獲得按下時的圖片,在彈起時獲得彈起時的圖片即可。

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

這裡buttonflag為定義的一個public變數,使用者可以在使用Click事件中判斷是否開啟成功,若沒有開啟成功可以將該變數置為原來的值,按鈕相應的也不會發生變化。

state用來判斷該按鈕是否是單次點選的按鈕,如果是,那彈起時還是原來的圖片。有些按鍵沒有按下時的圖片,也不予變化。

至此為止,一個新的封裝已經制作完畢,將該檔案編譯為dll並載入到工程中就能看到效果了,下面是測試效果圖:

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

這是一個帶按下動畫的按鈕。

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

這是一個不帶按下動畫的按鈕。

C#建立自定義控制元件及新增自定義屬性和事件使用例項詳解

這是一個單次點選的按鈕。

總結

到此這篇關於C#建立自定義控制元件及新增自定義屬性和事件使用的文章就介紹到這了,更多相關C#建立自定義控制元件及新增自定義屬性和事件使用內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!