public static string str = string.Empty; private void Border_MouseLeftButtonUp_3(object sender, MouseButtonEventArgs e) { /* 实例化对象,第一次没有触发事件, 因为对象中的 ChangeNum 事件没有绑定(注册)事件*/ EventTest es = new EventTest(); es.SetValue(); subscribEvent v = new subscribEvent(); /* 注册事件:将 subscribEvent 类中的普通方法绑定(注册)到 EventTest 类中定义的 ChangeNum 事件。*/ es.ChangeNum += new EventTest.NumManipulationHandler(v.printf); es.SetValue(); } #region 事件 /***********发布器类***********/ public class EventTest { public delegate void NumManipulationHandler(); public event NumManipulationHandler ChangeNum; public void OnNumChanged() { if (ChangeNum != null) { /* 事件被触发,执行与事件绑定(注册)的方法*/ ChangeNum(); } else { str += "事件没有被触发!"; } } public EventTest() { SetValue(); } public void SetValue() { OnNumChanged(); } } /***********订阅器类***********/ public class subscribEvent { /*普通方法*/ public void printf() { str += "触发了事件!"; } } #endregion