C# 自訂 UI元件/控制項(UserControl) 裡的button事件 如何讓上層的Form註冊 [Google: C# CLICK 事件轉發]
C# 自訂 UI元件/控制項(UserControl) 裡的button事件 如何讓上層的Form註冊 [Google: C# CLICK 事件轉發]
資料來源: https://toyo0103.blogspot.com/2012/04/c-button-form.html
GITHUB: https://github.com/jash-git/CS_ComboBoxTreeView [先前相關的元件範例]
code:
//Button Click的事件是經由EventHandler來進行委派的 //所以用該Handler註冊一個事件,我將該事件取名為Button_Click(這個是等等要給外面的Form註冊的) public event EventHandler Button_Click; //在自己做的控制項裡面註冊該按鈕的Click事件 this.btnDetail.Click += new EventHandler(btnDetail_Click); //將button_click事件轉出(轉發) private void btnDetail_Click(object sender, EventArgs e) { //在該事件裡面寫下以下程式,簡單的說就是檢查自己做的事件有無訂閱者,如果有就將事件透過Invoke的方法轉發出去。 if(Button_Click != null) { //利用Delegate轉出該Event給註冊於Button_Click的Event Handler //Button_Click.Invoke(sender,e); Button_Click.Invoke(this,e);//this 和 sender 差別在於this為自創元件主體,sender為原始出發該事件的子元件 } }