[英]How to work with delegates and event handler for user control
我創建了一個包含按鈕的用戶控件。 我在我的winform上使用這個控件,它將在從數據庫中獲取數據后在運行時加載。
現在我需要從該按鈕的Click事件中的數據表中刪除一行。
問題是我如何在表單中捕獲該事件。 目前它進入用戶控件的btn點擊事件定義。
您可以通過在用戶控件中執行以下操作來創建自己的委托事件:
public event UserControlClickHandler InnerButtonClick;
public delegate void UserControlClickHandler (object sender, EventArgs e);
您可以使用以下方法從處理程序中調用事件:
protected void YourButton_Click(object sender, EventArgs e)
{
if (this.InnerButtonClick != null)
{
this.InnerButtonClick(sender, e);
}
}
然后你可以使用掛鈎事件
UserControl.InnerButtonClick+= // Etc.
沒有必要聲明新的委托。 在您的用戶控件中:
public class MyControl : UserControl
{
public event EventHandler InnerButtonClick;
public MyControl()
{
InitializeComponent();
innerButton.Click += new EventHandler(innerButton_Click);
}
private void innerButton_Click(object sender, EventArgs e)
{
if (InnerButtonClick != null)
{
InnerButtonClick(this, e); // or possibly InnerButtonClick(innerButton, e); depending on what you want the sender to be
}
}
}
只是現代化ChéDon的答案,以下是2018年你可以做到的:
public class MyControl : UserControl
{
public event EventHandler InnerButtonClick;
public MyControl()
{
InitializeComponent();
innerButton.Click += innerButton_Click;
}
private void innerButton_Click(object sender, EventArgs e)
{
InnerButtonClick?.Invoke(this, e);
//or
InnerButtonClick?.Invoke(innerButton, e);
//depending on what you want the sender to be
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.