溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

委托在Smobiler自定義控件中運(yùn)用

發(fā)布時間:2020-07-12 19:34:21 來源:網(wǎng)絡(luò) 閱讀:343 作者:smobiler 欄目:編程語言

委托(Delegate)

C# 中的委托(Delegate)類似于 C 或 C++ 中函數(shù)的指針。委托(Delegate) 是存有對某個方法的引用的一種引用類型變量??梢詫⒎椒ó?dāng)作另一個方法的參數(shù)來進(jìn)行傳遞。

委托(Delegate)特別用于實現(xiàn)事件和回調(diào)方法。所有的委托(Delegate)都派生自 System.Delegate 類。

使用委托,必須滿足4個條件:


聲明委托類型;
必須有一個方法包含了要執(zhí)行的代碼;
必須創(chuàng)建一個委托實例;
必須調(diào)用(invoke)委托實例。


聲明委托

委托聲明決定了可由該委托引用的方法。委托可指向一個與其具有相同標(biāo)簽的方法。

public delegate void MyDelegate (string a);

委托調(diào)用

必須先實例化委托,然后再調(diào)用。
例如:

public delegate void MyDelegate();
//實例化委托
printString ex1 = new MyDelegate();
//委托調(diào)用 通過Invoke()調(diào)用,或者可以直接省略
ex1.Invoke();

委托的應(yīng)用

使用Smobiler的自定義控件時,往往需要在自定義控件中自定義事件,這時就可以運(yùn)用到委托。
自定義控件的創(chuàng)建可自行查看smobiler官網(wǎng)中自定義控件內(nèi)容。

應(yīng)用場景,自定義控件中有button控件,需要點(diǎn)擊button觸發(fā)自定義控件的事件。
我們下面直接看下,如何使用:

partial class ExampleButton :Smobiler.Core.Controls.MobileUserControl
{
/// <summary>
/// 在刪除按鈕點(diǎn)擊時發(fā)生
/// </summary>
[Description("在刪除按鈕點(diǎn)擊時發(fā)生")]

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>
/// 一個委托,它表示按鈕點(diǎn)擊時要調(diào)用的方法。
/// </summary>
/// <param name="sender">事件源</param>
/// <param name="e">包含事件數(shù)據(jù)的 DeletePress</param>
/// <remarks></remarks>
public delegate void EventHandler(object sender, EventArgs e);
}
之后可在Form中添加自定義控件查看:

委托在Smobiler自定義控件中運(yùn)用
查看自定義控件的事件,我們發(fā)現(xiàn)已經(jīng)添加事件成功:

委托在Smobiler自定義控件中運(yùn)用

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI