event事件C#学习笔记

event作用:

event  是修饰符,限制委托变量用 = 符号。

委托变量用等于 =  会导致,之前的绑定全部作废。所以event修饰后只能 += 和 -= 处理委托变量。

学这个之前,要先学会 delegate 委托的使用方法:

1声明

2定义

3绑定

4调用

1声明:  

namespace System
{
    [Serializable]
    [ComVisible(true)]
    [__DynamicallyInvokable]
    public delegate void EventHandler(object sender, EventArgs e);
}

 全局变量区System   ,跟窗体方法的参数签名相同。

2定义:  Click

//  Control

[SRCategory("CatAction")]
[SRDescription("ControlOnClickDescr")]
        public event EventHandler Click
        {
            add
            {
                base.Events.AddHandler(EventClick, value);
            }
            remove
            {
                base.Events.RemoveHandler(EventClick, value);
            }
        }

 Control   定义了方法   public event EventHandler Click

3绑定

this.button2.Click += new System.EventHandler(this.button2_Click);

 this.btn_开始.Click  +=  new  System.EventHandler(this.btn_开始钮click);

4调用

窗体运行后,由 Application  控制

//=====================================================================

from继承后,有个 this.Controls   (你就当它是父类对象)

this.Controls.Add(this.btn_开始);

控件在     System.Windows.Forms   

容器是     Controls    登记时  this.Controls.Add(this.btn_开始);

平台是      Application

绘制在      System.Drawing

加载事件:  this.btn_开始.Click  +=  new  System.EventHandler(this.btn_开始钮click);

 1       new  System.EventHandler是新建个无名的变量对象,它绑定 this.btn_开始钮click

 2       this.btn_开始.Click  +=   无名的变量对象;

// 我们前面学过,变量的赋值 

int Click;

int  b; 

Click = b;  //同类型的变量才能赋值,只是b没有名字,再把 int  改成委托  EventHandler

namespace System
{
    [Serializable]
    [ComVisible(true)]
    [__DynamicallyInvokable]
    public delegate void EventHandler(object sender, EventArgs e);
}

 按钮对象,它有个属性叫   Click 它的类型是    EventHandler

// 主窗体实际是  Form  派生出来的儿子 

private void btn_开始钮click  (object  sender,EventArgs  e )
{     //开始钮按下的业务逻辑


}

.Click本质是个委托。

foreach (Control item in this.Controls)
            {
                if (item is Button && item.Tag?.ToString() == "btn")
                {
                    ((Button)item).Click+= new System.EventHandler(this.btn_Click);
                }
            }

 this.Controls  主容器

Control的只读属性

public ControlCollection Controls

.Click    //  它是 EventHandler  类型   的变量( 它等待被人绑定 方法)

Control对象的方法

 public event EventHandler Click
        {
            add
            {
                base.Events.AddHandler(EventClick, value);
            }
            remove
            {
                base.Events.RemoveHandler(EventClick, value);
            }
        }

  EventHandler   是 委托类型

namespace System
{
    [Serializable]
    [ComVisible(true)]
    [__DynamicallyInvokable]
    public delegate void EventHandler(object sender, EventArgs e);
}

 看下流程:

1 全局变量区 声明了       委托类型    EventHandler

namespace System
{
   
    public delegate void EventHandler(object sender, EventArgs e);
}

2  Control   定义了方法   public event EventHandler Click

3  窗体继承了   .Click

等待后面的儿子赋值   Click

.Click+= new System.EventHandler(this.btn_Click);
 private void btn_Click(object sender, EventArgs e)
        {

btn_Click      的方法类型就是    EventHandler   的类型

public  delegate  void  EventHandler( object  sender  ,  EventArgs  e  );// 全局变量区

public  event  EventHandler  Click;//  定义变量  // 定义方法委托类型

object 是装箱拆箱,表示谁发起调用的。       e表示事件的类型,形参

event的作用是在委托的基础上,限制用=  来绑定方法。只能用   +=   和   -=   来加载卸载方法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值