[C#]Event Handler觀念筆記

其實Delegate和Event也寫了幾次了

但是每次都相隔非常久的時間

上次寫大概是兩年前的事...

今天要寫就忘光光了

先來做個筆記吧

當不同的Thread或者是不同的UserControl需要傳送訊息的時候,可以使用EventHandler和Delegate 來傳遞訊息

這裡就先以Event為主。

稍微講一下流程:當UserControl發生某件事情的時候,需要通知Form去更新其他Control的資料

因這個事件發生的主體是在UserControl,所以要把Event寫在UserControl內,
e.g public event EventHandler<EventArgs> SelectedFieldChanged;

並且當事情發生時要Invoke這個EventHandler
e.g protected void OnSelectedFieldChanged(EventArgs e) => SelectedFieldChanged?.Invoke(this,e);

1.宣告一個EventHandler 譬如 選擇某一個欄位時..
e.g SelectedFieldChanged....

2.新建一個Method當某件事發生的時候要去invokeEventHandler
e.g. :當選擇欄位發生時 OnSelectedFieldChanged...

此時因為會透過Form來做其他動作,所以這個時候我們會去註冊該UserControl的EventHandler
e.g UserControl.SelectedFieldChange += Uc_SelectedFieldChange

其中+= or -= 的右邊就是在事情發生後會實際執行的Mehtod 所以必須實作這個Mehtod(VS2017 會自動幫你建立這個Method)
e.g.
private void Uc_SelectedFieldChange(object sender, EventArgs e)
{
                 (略).....要做的事情寫在這裡
}

 

整個流程大概是這樣 還弄了張圖怕自己以後看不懂(搞不好看了圖更不懂XD)


 

-----------------------------------------

有時在會走之前你就得跑

你不解決問題 就等問題解決你