正文

C#Doorstep2面向对象程序设计篇82008-04-03 16:42:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xman/33903.html

分享到:

事件 事件是对象发送的消息,以发信号通知操作的发生。操作可能是由用户交互(例如鼠标单击)引起的,也可能是由某些其它的程序逻辑触发的。引发(触发)事件的对象叫做事件发送方。捕获事件并对其作出响应的对象叫做事件接收方。 在事件通信中,事件发送方类不知道哪个对象或方法将接收到(处理)它引发的事件。所需要的是在源和接收方之间存在一个媒介(或类似指针的机制)。这个媒介就是委托。 新建一个Windows窗体应用程序,接口上放置一个卷标,一个框架,框架上放置5个按钮。界面如下。各按钮Tag依次为0、1、2、3、4,给按钮添加单击事件,5个按钮的单击事件处理函数均为button1_Click。 //挡位元元元元模拟案例演示如何通过委托来定义事件。 //Form1.cs using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms;   namespace Exam2_13 {      public class Form1 : System.Windows.Forms.Form      {          //窗体设计器自动生成的代码略          static void Main()          {               Application.Run(new Form1());          }          private void button1_Click(object sender, System.EventArgs e)          {               Break b=new Break();//建立文件类实例             b.ChangeBreak+=new BreakHandler(b_ChangeBreak);//事件挂接               BreakArgs ee=new BreakArgs();//新建BreakArgs实例,并传入文件为数值               ee.Level=Convert.ToInt32(((Button)sender).Tag);               b.OnChangeBreak(sender,ee);//引发事件          }          private void b_ChangeBreak(object sender,BreakArgs e)          {               switch(e.Level)               {                 case 0:                        label1.Text="您启动了汽车,时速10";                        break;                    case 1:                        label1.Text="当前檔位:1檔,时速20";                        break;                    case 2:                        label1.Text="当前檔位:2檔,时速40";                        break;                    case 3:                        label1.Text="当前檔位:3檔,时速80";                        break;                    case 4:                        label1.Text="当前檔位:倒檔,时速-5";                        break;               }          }      }      public delegate void BreakHandler(object sender,BreakArgs e);      //建立能够传递檔位数值的参数类型      public class BreakArgs:EventArgs      {          private int i;          public int Level          {               get{  return i;}               set{  i=value;}          }      }      //建立一个类,该类声明了一个事件      public class Break      {          public event BreakHandler ChangeBreak;          public void OnChangeBreak(object sender,BreakArgs e)          {               if(ChangeBreak!=null)               {                    ChangeBreak(sender,e);               }          }      } } 结果分析:

阅读(2802) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册