TOP

C#和ASP.NET之事件
2019-09-03 03:27:10 】 浏览:53
Tags:ASP.NET 事件

  事件是一种用于类和类之间传递消息或触发新的行为的yabo体育app下载方式。通过提供事件的句柄,能够把控件和可执行的代码联系在一起,

如用户单击Button控件触发Click事件后就执行相应的事件处理代码。

  事件的声明通过委托来实现。先定义委托,再用委托定义事件,触发事件的过程实质是调用委托。事件声明语法格式如下:

public delegate void EventHandler(object sender,EventArgs e);//定义委托

public event EventHandler MyEvent;//定义事件

  EventHandler委托定义了两个参数,分别属于object类型和EventArgs类型。如果需要更多参数,可以通过派生EventArgs类实现。

sender表示触发事件的对象,e用于在事件中传递参数。例如,若用户单击Button按钮,则sender表示Button按钮,e表示Click时间参数。

  MyEvent事件使用EventHandler委托定义,其中使用了public修饰符,也可以使用private,protected等修饰符。

 

实例:在AccountEvent类中增加账户金额不足事件并运用事件

AccountEvent类的定义:

 1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Web;  5 
 6 
 7 public class AccountEvent  8 {  9     private string _ID; 10     private string _Name; 11     private decimal _Balance; 12     //定义Overdraw事件
13     public event EventHandler Overdraw; 14     public void OnOverDraw(object sender, EventArgs e) 15  { 16         if (Overdraw != null) 17  { 18             Overdraw(this,e); 19 
20  } 21  } 22     //存款方法
23     public void Deposit(decimal amount) 24  { 25         //先检查存款的金额是否大于0
26         if (amount > 0) 27  { 28             _Balance += amount; 29  } 30         else
31  { 32             throw new Exception("存款的金额不能小于等于0!!"); 33  } 34  } 35     //取款方法 36     //并在此方法中加入触发事件的代码
37     public void Acquire(decimal amount) 38  { 39         if (amount < _Balance) 40  { 41             _Balance -= amount; 42  } 43         else
44  { 45             OnOverDraw(this, EventArgs.Empty); 46             return; 47  } 48  } 49    
50     public string ID 51  { 52         get { return _ID; } 53         set { _ID = value; } 54  } 55     public string Name 56  { 57         get { return _Name; } 58         set { _Name = value; } 59  } 60     public decimal Balance 61  { 62         get { return _Balance; } 63         set { _Balance = value; } 64  } 65     //构造方法
66     public AccountEvent(string id,string name,decimal balance) 67  { 68         _ID = id; 69         _Name = name; 70         _Balance = balance; 71 
72  } 73    
74     
75 }

 

至此,已经声明了事件并增加了事件触发点。但若要在ASP.NET页面上使用事件,还需要使用运算符“+=”注册事件,并要编写事件处理代码。

下面是如何运用Overdraw事件。

AccountEventPage.aspx.cs的代码:

 1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Web;  5 using System.Web.UI;  6 using System.Web.UI.WebControls;  7 
 8 public partial class Chap3_AccountEventPage : System.Web.UI.Page  9 { 10     protected void Page_Load(object sender, EventArgs e) 11  { 12         AccountEvent accountEvent = new AccountEvent("03012", "李明", 200);//建立AccountEvent对象,账户初始金额为200 13         //注册Overdraw事件
14         accountEvent.Overdraw += new EventHandler(account_OverDraw); 15         accountEvent.Acquire(400);//取款400 16 
17  } 18     //Overdraw事件处理代码
19     private void account_OverDraw(object sender, EventArgs e) 20  { 21         Response.Write("账户金额不足了!!!"); 22  } 23 }

 

浏览AccountEventPage.aspx呈现界面如下:

 

程序说明:

当程序执行“account.Acquire(400);”时,因为对账户的取款金额大于账户金额,会执行Acquire方法中if语句的else部分,将触发事件Overdraw;再执行account_Overdraw()方法,输出信息“账户金额不足了!!!”。

 

此例子中事件运用的步骤为:

1.定义事件。

2.设置事件的触发点。

3.使用运算符“+=”注册事件。

4.编写事件处理代码。

其中1、2两步是在类的定义中完成的,3、4步是在aspx文件中完成的的。


C#和ASP.NET之事件 https://www.cppentry.com/bencandy.php?fid=106&id=248931

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇vs2010远程调试断点无效问题 下一篇Z.ExtensionMethods 一个强大的开..

kafka-
kafka   Partit
解决android studio
Kafka史上最详细原理
Error while fetchin
【Kafka】安装与快速
    &
flume读取日志数据写
Authentication plug
Flume 自定义source
flume   三大核
ICC副本>>>
愚公移山  
Hbase架构   Hb
5 hbase-shell + &
Hbase   MapRed
MetaException(messa
Exception in thread
HIVE metastore Dupl
-->