C#和ASP.NET之事件
来源:互联网 发布:常用数据库优化方法 编辑:程序博客网 时间:2024/05/21 19:30
如用户单击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 //先检查存款的金额是否大于026 if (amount > 0)27 {28 _Balance += amount;29 }30 else31 {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 else44 {45 OnOverDraw(this, EventArgs.Empty);46 return;47 }48 }49 50 public string ID51 {52 get { return _ID; }53 set { _ID = value; }54 }55 public string Name56 {57 get { return _Name; }58 set { _Name = value; }59 }60 public decimal Balance61 {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对象,账户初始金额为20013 //注册Overdraw事件14 accountEvent.Overdraw += new EventHandler(account_OverDraw);15 accountEvent.Acquire(400);//取款40016 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之事件
- [ASP.NET MVC 大牛之路]02 - C#高级知识点概要(1) - 委托和事件
- [ASP.NET MVC 大牛之路]01 - C#高级知识点概要(1) - 委托和事件
- [ASP.NET MVC 大牛之路]02 - C#高级知识点概要(1) - 委托和事件
- C# 和vb.net事件
- asp.net 和C# 知识点
- ASP.NET用户控件事件的定义和实践--C#里的委托和事件实现Observer
- asp.net C#母版页和内容页事件排版加载顺序生命周期
- asp.net C#母版页和内容页事件排版加载顺序生命周期
- .NET 、 C# 和 ASP.NET 的关系
- 认识 .net 、ASP.NET和C#
- .NET 、 C# 和 ASP.NET 的关系
- .net , C#和asp.net的区别
- .NET、C#和ASP.NET的关系
- .NET,C#和ASP.NET的关系
- ASP.NET、.NET和C#的关系
- .NET,C#和ASP.NET的关系
- (C#)ASP.Net之Load、Init事件
- 机智云Gokit V2.1 使用CubeMX应用UCOS
- XML语言基础3--Schema
- tomcat安装及配置
- WPF -- 设置 DatePicker 的日期时间显示格式
- 算法之排序算法
- C#和ASP.NET之事件
- 利用Netty进行客户端和服务端交互的入门示例
- linux指令
- javascript取出容器中input的值,存到数组中
- Android打印机--蓝牙打印
- 狗屎一样的React(第五节,React组件的生命周期)
- WPF -- 绑定显示多个属性
- 存储管理方法总结
- redis笔记3--事务及优