EventHandler表示將處理不包含事件數據的事件的方法
1.聲明一個繼承EventArgs的子類,傳遞參數
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EventHandlerExample { public class ClassInfoEventArgs:EventArgs { /// <summary> /// 班級所屬年級 /// </summary> public string ClassGrade { get; set; } /// <summary> /// 班級名稱 /// </summary> public string ClassName { get; set; } /// <summary> /// 構造方法 /// </summary> /// <param name="ClassGrade"></param> /// <param name="ClassName"></param> public ClassInfoEventArgs(string ClassGrade, string ClassName) { this.ClassGrade = ClassGrade; this.ClassName = ClassName; } } }
2.聲明委托對象、執行方法,將方法綁定委托對象
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EventHandlerExample { public class StudentInfo { /// <summary> /// 聲明委托對象 /// </summary> public event EventHandler<ClassInfoEventArgs> showStudentInfo; public StudentInfo() { //綁定 showStudentInfo += new EventHandler<ClassInfoEventArgs>(showStudentInfoMethod); } /// <summary> /// 聲明一個方法綁定委托 /// </summary> /// <param name="sender"></param> /// <param name="classInfoEvent"></param> public void showStudentInfoMethod(object sender, ClassInfoEventArgs classInfoEvent) { Console.WriteLine("我是" + classInfoEvent.ClassGrade + classInfoEvent.ClassName + "的學生"); } /// <summary> /// 調用方法,開啟委托 /// </summary> public void callShowStudentInfo(ClassInfoEventArgs classInfoEvent) { if (showStudentInfo!=null) { showStudentInfo(this, classInfoEvent); } } } }
3.開啟EventHandler委托
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EventHandlerExample { class Program { static void Main(string[] args) { ClassInfoEventArgs classInfoEvent = new ClassInfoEventArgs("三年級", "二班"); StudentInfo studentInfo = new StudentInfo(); studentInfo.callShowStudentInfo(classInfoEvent); } } }