您好,登錄后才能下訂單哦!
委托(Delegate)
C# 中的委托(Delegate)類似于 C 或 C++ 中函數的指針。委托(Delegate) 是存有對某個方法的引用的一種引用類型變量。可以將方法當作另一個方法的參數來進行傳遞。
委托(Delegate)特別用于實現事件和回調方法。所有的委托(Delegate)都派生自 System.Delegate 類。
使用委托,必須滿足4個條件:
聲明委托類型;
必須有一個方法包含了要執行的代碼;
必須創建一個委托實例;
必須調用(invoke)委托實例。
聲明委托
委托聲明決定了可由該委托引用的方法。委托可指向一個與其具有相同標簽的方法。
public delegate void MyDelegate (string a);
委托調用
必須先實例化委托,然后再調用。
例如:
public delegate void MyDelegate();
//實例化委托
printString ex1 = new MyDelegate();
//委托調用 通過Invoke()調用,或者可以直接省略
ex1.Invoke();
委托的應用
使用Smobiler的自定義控件時,往往需要在自定義控件中自定義事件,這時就可以運用到委托。
自定義控件的創建可自行查看smobiler官網中自定義控件內容。
應用場景,自定義控件中有button控件,需要點擊button觸發自定義控件的事件。
我們下面直接看下,如何使用:
partial class ExampleButton :Smobiler.Core.Controls.MobileUserControl
{
/// <summary>
/// 在刪除按鈕點擊時發生
/// </summary>
[Description("在刪除按鈕點擊時發生")]
public event EventHandler ButtonPress;
public ExampleButton() : base()
{
//This call is required by the SmobilerUserControl.
InitializeComponent();
}
private void SmobilerUserControl1_Load(object sender, EventArgs e)
{
button1.Press += (obj, args) => { this.OnButtonPress(); };
}
private void OnButtonPress()
{
if (ButtonPress != null) ButtonPress.Invoke(this, new EventArgs());
}
/// <summary>
/// 一個委托,它表示按鈕點擊時要調用的方法。
/// </summary>
/// <param name="sender">事件源</param>
/// <param name="e">包含事件數據的 DeletePress</param>
/// <remarks></remarks>
public delegate void EventHandler(object sender, EventArgs e);
}
之后可在Form中添加自定義控件查看:
查看自定義控件的事件,我們發現已經添加事件成功:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。