其實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)
-----------------------------------------
有時在會走之前你就得跑
你不解決問題 就等問題解決你