C# 自訂 UI元件/控制項(UserControl) 裡的button事件 如何讓上層的Form註冊 [Google: C# CLICK 事件轉發]

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




發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *