//首选在类中做如下操作: public class CBook { private string m_title; public delegate void TitleChangeHandle(); //1,创建委托 public event TitleChangeHandle TitleChange; //2 创建事件 public string Title { set { this.m_title = value; TitleChange(); //3测试,当属性值改变时来触发事件 } } } //在调用页面: //首先编写事件处理函数: void BookChange() { Response.Write("事件执行了"); } //最后用下面一个小例子测试一下: CBook book = new CBook(); book.TitleChange+=new CBook.TitleChangeHandle(BookChange);//添加事件 book.Title = "test"; //============================================== //EventHandler以及其它自定义的事件委托都是一类特殊的委托,他们有相同的形式: delegate void 事件委托名(object sender,EventArgs e); //object用来传递事件的发生者,比如二中的Button控件就是一个事件发生者;EventArgs用来传递事件的细节。 //例程二: class Class1 { public delegate void UserRequest(object sender,EventArgs e); //定义委托 public event UserRequest OnUserRequest; //定义一个委托类型的事件 public void run() { while(true) { if(Console.ReadLine()=="a") { OnUserRequest(this,new EventArgs()); //产生事件 } } } } // 事件接收类 class Class2 { static void Main(string[] args) { Class1 c1 = new Class1(); //委托实例化后绑定到事件 c1.OnUserRequest += new Class1.UserRequest(c1_OnUserRequest); c1.run(); } private static void c1_OnUserRequest(object sender, EventArgs e)//事件处理方法 { Console.WriteLine("\t你触发了事件!"); } } //例程三:程序代码 // 带事件数据的事件类,从EventArgs继承 class OnUserRequestEventArgs:EventArgs { private string inputText; public string InputText { get { return inputText; } set { inputText = value; } } } // 事件发送类 class Class1 { public delegate void UserRequest(object sender,OnUserRequestEventArgs e);//声明委托 public event UserRequest OnUserRequest;//定义一个委托类型的事件 public void run() { while(true) { Console.WriteLine("请输入内容:"); string a=Console.ReadLine(); //if(a=="a") //{ OnUserRequestEventArgs e1 = new OnUserRequestEventArgs(); e1.InputText = a; OnUserRequest(this,e1); //} } } } // 事件接收类 class Class2 { [STAThread] static void Main(string[] args) { Class1 c1 = new Class1(); c1.OnUserRequest += new Class1.UserRequest(c1_OnUserRequest); c1.run(); } private static void c1_OnUserRequest(object sender, OnUserRequestEventArgs e) { Console.WriteLine("\t你输入的是:"+e.InputText); } } //例程三跟例程二唯一的差别在于自定义了一个类OnUserRequestEventArgs,从EventArgs继承