1、事件5大部分:事件拥有者、事件成员、事件的订阅关系、事件响应者、事件处理器
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.btn1.Click += new RoutedEventHandler(this.btn1_Click); //手动挂接到事件处理器 this.btn1.Click += (object sender, RoutedEventArgs e) => { this.txt1.Text = "nihao"; }; //使用lambda表达式定义新的事件处理器 this.btn1.Click += (sender, e) => { this.txt1.Text = "shenjingbing"; }; //简化lambda表达式写法 } private void btn1_Click(object sender, RoutedEventArgs e) { this.txt1.Text = "Hello World!"; } }
2、



namespace Order { internal class Program { static void Main(string[] args) { Customer customer = new Customer(); Waiter waiter = new Waiter(); customer.Order += waiter.Action; customer.Action(); customer.PayTheBill(); } } public delegate void OrderEventHandler(Customer customer, OrderEventArgs e); public class OrderEventArgs:EventArgs { public string DishName { get; set; } public string DishSize { get; set; } } public class Customer { private OrderEventHandler orderEventHandler; public event OrderEventHandler Order { add { orderEventHandler += value; } remove { orderEventHandler -= value; } } public double Bill { get; set; } public void PayTheBill() { Console.WriteLine("I will Pay you ${0}.",this.Bill); } public void Walkin() { Console.WriteLine("Walk in..."); } public void Sitdown() { Console.WriteLine("Sit down..."); } public void Think() { for (int i = 0; i < 3; i++) { Console.WriteLine("Let me think..."); Thread.Sleep(1000); } if (this.orderEventHandler!=null) { OrderEventArgs e=new OrderEventArgs(); e.DishSize = "large"; e.DishName = "扬州蛋炒饭"; this.orderEventHandler(this,e); } } public void Action() { Console.ReadLine(); this.Walkin(); this.Sitdown(); this.Think(); } } public class Waiter { public void Action(Customer customer, OrderEventArgs e) { Console.WriteLine("I will serve you {0}",e.DishName); double price = 10; switch (e.DishSize) { case "small": price *= 0.5; break; case "large": price *= 1.5; break; default: break; } customer.Bill += price; } } }
浙公网安备 33010602011771号