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;
        }

    }
}

 

posted on 2023-02-16 13:51  漂乎兮乎  阅读(63)  评论(0)    收藏  举报