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為原始出發該事件的子元件
}
}