正文

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

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

分享到:


事件

事件是对象发送的消息,以发信号通知操作的发生。操作可能是由用户交互(例如鼠标单击)引起的,也可能是由某些其它的程序逻辑触发的。引发(触发)事件的对象叫做事件发送方。捕获事件并对其作出响应的对象叫做事件接收方。

在事件通信中,事件发送方类不知道哪个对象或方法将接收到(处理)它引发的事件。所需要的是在源和接收方之间存在一个媒介(或类似指针的机制)。这个媒介就是委托。

新建一个Windows窗体应用程序,接口上放置一个卷标,一个框架,框架上放置5个按钮。界面如下。各按钮Tag依次为01234,给按钮添加单击事件,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);

              }

         }

     }

}

结果分析:

阅读(2519) | 评论(0)


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

评论

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