C#自定義類中加入事件
阿新 • • 發佈:2022-05-23
在自定義類中加入事件,事件引數可以是基礎型別,或自定義型別(需繼承自System.EvenArgs)
class AddText { //internal event EventHandler<string> AddShowText;//使用基礎型別時 internal event EventHandler<StringEvenArgs> AddShowText;//使用自定義型別時 public virtual void OnAddShowText(StringEvenArgs str) { AddShowText?.Invoke(this, str); } } /// <summary> /// 定義一個事件的傳遞引數型別,必須繼承自:System.EvenArgs /// </summary> public class StringEvenArgs : System.EventArgs { public readonly string str; public StringEvenArgs(string s) { str = s; } }
然後在呼叫上述類時,可以將事件通知到本類中的方法中。
public partial class Form1 : Form { AddText AddText = new AddText(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { AddText.AddShowText += AddText_AddShowText; } ///<summary> /// 觸發事件 ///</summary> private void txtInput_TextChanged(object sender, EventArgs e) { AddText.OnAddShowText(new StringEvenArgs(txtInput.Text)); } private void AddText_AddShowText(object sender, StringEvenArgs e)//e的資料型別要與事件定義的一致 { txtShow1.Text = e.str; txtShow2.Text = e.str; } }