2010年7月24日 星期六

以擴充方法替Canvas, Grid...等容器建立淡入淡出效果

從.NET的語言導入的擴充方法之後,我一直覺得它是一個挺方便的技術。
而開發環境的配合,也讓擴充方法的便利性更加的高。

舉個例子來說,我們寫了一段以程式碼動態為按鈕建立滑鼠移過時的淡入淡出效果,透過擴充方法,我們可以在主程式當中這樣使用:

圖中的ButtonPanel是繼承自Panel的Canvas物件,當然,Canvas物件是沒有registerFadeEffect方法的,但由於我們替Panel建立了擴充方法:

public static class MyEffects //改為靜態類別, 以適用擴充方法
{
//註冊事件處理函式(擴充方法版)
public static void registerFadeEffect(this Panel container)
{
//設定先為0.1
container.Opacity = 0.1;
//如果滑鼠進入
container.MouseEnter += container_MouseEnter;
//如果滑鼠離開
container.MouseLeave += container_MouseLeave;
}

使得VS2010可以直接在ButtonPanel後面帶出該擴充方法,呼叫起來相當便利。

請注意建立擴充方法的關鍵在其所屬的類別為靜態類別,且方法中第一個參數前加上this, 就表示該方法要提供給該參數所屬型別的所有物件使用。

程式碼下載請參考[CodeStorage]。

1 則留言:

匿名 提到...

請問版主,是使用 WLW 離線編輯器撰寫 blogger 的嗎?