• 事件示例


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Timers;
    using System.Windows.Forms;
    
    namespace EventLearning
    {
        class Program
        {
            static void Main(string[] args)
            {
                //例一:
    //            System.Timers.Timer timer = new System.Timers.Timer();//事件的拥有者
    //            timer.Interval = 1000;
    //            Boy boy = new Boy();//事件的响应者
    //            Girl girl = new Girl();
    //            timer.Elapsed += girl.Action;
    //            timer.Elapsed += boy.Action;//Elapsed是事件,+=是订阅,Action是事件处理器
    //            timer.Start();
    //            Console.ReadKey();
    
                
    //            //例二:事件的拥有者和响应者是不同对象
    //            Form form = new Form();//事件拥有者
    //
    //            Controller controller = new Controller(form);//controller事件响应者,
    //            form.ShowDialog();
    
    //            //例三:事件的拥有者和响应者是相同对象
    //            MyForm myForm = new MyForm();
    //            myForm.Click += myForm.FormClicked;
    //            myForm.ShowDialog();
    //            
    
                //例四:事件拥有者是事件响应者的字段成员,事件响应者用自己的方法订阅自己成员的事件
                MyForm2 myForm2 = new MyForm2();
                myForm2.ShowDialog();
                
            }
        }
        
        class Controller
        {
            private Form _form;
    
            public Controller(Form form)
            {
                if (form!=null)
                {
                    this._form = form;
                    this._form.Click += this.FormClicked;//Click事件,+=订阅
                }
            }
    
            private void FormClicked(object sender, EventArgs e)//事件处理器
            {
                this._form.Text = DateTime.Now.ToString();
            }
        }
    
    
        class MyForm : Form
        {
            internal void FormClicked(object sender, EventArgs e)
            {
                this.Text = DateTime.Now.ToString();
            }
        }
    
        class  MyForm2 : Form
        {
            private TextBox _textBox;
            private Button _button1;
            private Button _button2;
            private Button _button3;
            private Button _button4;
    
            public MyForm2()
            {
                this._textBox = new TextBox();
                this._button1 = new Button();
                this._button2 = new Button();
                this._button3 = new Button();
                this._button4 = new Button();
                this.Controls.Add(this._button1);
                this.Controls.Add(this._button2);
                this.Controls.Add(this._button3);
                this.Controls.Add(this._button4);
                this.Controls.Add(this._textBox);
                this._button1.Click += this.ButtonClicked;
                this._button1.Text = "Say Hello";
                this._button1.Top = 100;
    
                this._button2.Click += this.ButtonClicked;
                this._button2.Text = "Say World";
                this._button2.Top = 130;
    
                this._button3.Click += new EventHandler(this.ButtonClicked);//传统挂接方式
                this._button3.Text = "ML";
                this._button3.Top = 160;
    
                this._button4.Click += (object sender, EventArgs e) =>
                {
                    this._textBox.Text = "hahahaha";
                };//匿名函数委托形式挂接
                this._button4.Text = "hahaha";
                this._button4.Top = 190;
    
            }
    
            private void ButtonClicked(object sender, EventArgs e)//sender就是事件的发送者
            {
                if (sender==this._button1)
                {
                    this._textBox.Text = "Hello";
                }
                if (sender == this._button2)
                {
                    this._textBox.Text = "World";
                }
                if (sender == this._button3)
                {
                    this._textBox.Text = "ML";
                }
            }
        }
    
    
        class Boy
        {
            //事件处理器
            internal void Action(object sender, ElapsedEventArgs e)
            {
                Console.WriteLine("lala~");
            }
        }
    
    
        class Girl
        {
            internal void Action(object sender, ElapsedEventArgs e)
            {
                Console.WriteLine("singing~");
            }
        }
    }
  • 相关阅读:
    android连接wifi模块
    idea 控制台乱码debug
    线程控制
    jvm 垃圾回收
    java 单例模式
    http报头
    java 构造函数 , 参数传递 , lamda表达式
    mysql 杂识
    spring mvc 配置 拦截器不起作用
    spring mvc 每次请求后是否自动销毁线程
  • 原文地址:https://www.cnblogs.com/Manuel/p/13525402.html
Copyright © 2020-2023  润新知