【C#基礎】 解決winform窗體調用組合控件類的內部事件-事件的封裝

問題描述

在我們實際程序開發過程中,各種需求層出不窮,有的是正常的需求,有的是因爲代碼構思不合理導致的畸形需求,然而在實際開發中,由於經驗問題,這種情況對於我們大多數菜鳥來說不可避免,這不在實際的開發中,遇到了這麼一個問題:因爲要進行大量的GridView(GridControl控件)的基本功能設計,比如檢索,導出到Excel,自動排序,底部欄自動計數,保存佈局,設置默認佈局,恢復最近佈局等等,爲了追求代碼的可讀性和高利用性,設計了一個自定義的組件GridViewToolBar,繼承自BindingNavigator。這個組件由多個自定義的子組件(A,B,C,D等,分別是實現不同的功能模塊)組成,實現了直接加載工具項的方式加載自定義組件,當組件定義好了封裝以後,發現組件定義的View_CustomDrawIndicator(object sender,DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)事件只是針對普通的GridView的沒有分組列時的情況,但是對於有分組的情況下,組序號時默認序號是負值,檢索框也會出現序號,是-9999999的值,爲了滿足實際的操作需求,現在需要對這個默認事件在進行修改;

思路

  因爲自定義的View_CustomDrawIndicator事件屬於子組件,而這些子組件組合成爲了對外的組件GridViewToolBar,所以要實現用戶可以自定義自動編號的功能,需要子組件對外公佈一個代理,或者是事件,在實際運行期間,先檢測用戶代理是否爲null;不爲空的話執行代理,爲空的話執行默認編碼方法;

解決辦法

默認方法不進行修改,在子組件和GridViewToolBar組件類中同時定義事件UserCustomDrawIndicator(object sender,DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e),同時定義相同類型的事件,是爲了將子組件的事件封裝開放給用戶,用戶在實際使用過程中,可以選擇訂閱事件來使用自己定義的自動編碼方法;在GridViewToolBar組件的事件View_CustomDrawIndicator中,重寫add方法爲

public event View_CustomDrawIndicator 

{add{this.A.View_CustomDrawIndicator +=value}}

這樣既可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章