`
陈好好
  • 浏览: 9776 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

事件于委托

    博客分类:
  • C#
 
阅读更多
一、事件
(1)需要一个表示时间参数的对象
class BallEventArgs:EventArgs
    {
        public int Trajectory{get; private set;}
        public int Distence{get; private set;}
        public BallEventArgs(int Trajectoty, int Distence){
            this.Trajectory = Trajectory;
            this.Distence = Distence;
        }
    }
(2)在产生事件的类专用定义这个事件
//产生事件的类
    class Ball
    {
        //定义事件
        //EventHandler告诉事件订购对象它的事件处理方法应该是什么样的
       public event EventHandler BallInPlay;
       
        //产生事件
        public void OnBallInPlay(BallEventArgs e){
            if (BallInPlay != null)
                BallInPlay(this,e);
        }

    }
(3)订购类需要处理事件的方法,各个对象订购事件
class Pitcher
    {//订购事件
        public Pitcher(Ball ball) {
           ball.BallInPlay += new EventHandler(ball_BallInPlay);
        }
        //事件处理程序
        void ball_BallInPlay(object sender, EventArgs e) {
            if (e is BallEventArgs) {
                BallEventArgs ballEventArgs = e as BallEventArgs;
                if (ballEventArgs.Distence < 95 && ballEventArgs.Trajectory < 60)
                    CatchBall();
                else
                    CoverFirstBase();
            }
        }

        private void CatchBall() {
            MessageBox.Show("Pitcher: I catch the ball!");
        }

        private void CoverFirstBase(){
            MessageBox.Show("Pitcher: I cover first base!");
        }
    }
(4)测试
public partial class Form1 : Form
    {
        Ball ball = new Ball();
        Pitcher pitcher;
        public Form1()
        {
            InitializeComponent();
            pitcher = new Pitcher(ball);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            BallEventArgs ballEventArgs = new BallEventArgs((int)numericUpDown1.Value, (int)numericUpDown2.Value);
            ball.OnBallInPlay(ballEventArgs);
        }
    }
分享到:
评论

相关推荐

    C#事件与委托详细解说

    本PPT详细的介绍了C#中的事件与委托,有助于初学者的学习 喜欢的朋友可以下载

    事件.pdf(委托和事件有什么不同)

    /// /// 委托和事件有什么不同 /// 1:关键字不同,委托是关键字delegate 事件是... /// 事件的作用于委托变量一样,只是功能上委托变了有更多的限制 /// 只能通过+=或者-=的方式,只能在类的内部调用事件 ///

    C#委托与事件PPT

    委托与事件讲解ppt,可以让从0开始学C#的人了解委托与事件的区别和联系

    C#利用事件委托实现窗体的传值做的计算器

    利用委托于与事件的原理,实现窗体的传值,在这个程序里面应用了正则表达式,委托,事件的原理。能够帮助你近一步了解窗体的复杂操作!!

    C#委托事件-张子阳.pdf

    这本资料给我们提供了一个很好的例子,水浒烧水的案例,相信会对大家有用,所以就贡献出来于大家分享!

    委托和事件还有Button事件于一体的观察者模式实例应用

    超级实用的观察者模式案例

    金旭亮《C#面向对象程序设计》教案_6:委托与事件

    此教案重点介绍.NET平台上的重要技术——委托,以及对建立于委托基础之上的.NET事件响应机制的深入剖析。包括两个29页的PDF文档及数个VS2010示例。前几讲的教案请访问http://bitfan.download.csdn.net/下载,更新...

    C#子窗口与父窗口的交互-使用委托与事件

    1,资源来源于网络,共享 2,基于两个窗体的信息交互 3,使用了委托的方式实现信息交互 4,父窗口调用子窗口,并通过子窗口控制父窗口

    C#中的委托、事件和Observer设计模式使用方法示例

    此文档有助于学习C#委托、事件和Observer设计模式。

    JavaScript事件代理和委托详解

    在javasript中,代理、委托经常出现。...这主要得益于浏览器的事件冒泡机制,下面我们具体举个例子来解释如何使用这个特性。 这个例子主要取自David Walsh的相关文章(How JavaScript Event Delegation

    JavaScript之事件委托实例(附原生js和jQuery代码)

    事件委托的原理依赖于事件冒泡,可以通过给父元素的事件委托来确定是哪个子元素触发了事件从而做一系列操作。 使用事件委托的优点 1、操作子元素时不用一一遍历,可以根据事件触发的对象而进行相应操作 dom结构如下...

    委托和事件及Button事件于一体的观察者模式实例应用

    经典观察者应用实例

    jQuery事件委托之Safari

    事件委托是Jquery中一种事件绑定的方式,不同于常见的事件绑定方式将事件绑定在目标元素上,而是将事件绑定在父级元素上通过事件冒泡来执行绑定函数。 //常见的事件绑定(Jquery) $(element).click(function(){ //...

    使用委托进行窗体间的传值

    相当于创建了一个按照组合的顺序一次调用的新委托对象 d. 委托的组合一般是给事件用的,用普通的委托的时候很少用 窗口传值的方式: 1. 使用静态字段(由于消耗大量资源,且资源得不到及时的释放,不建议使用) 2....

    C#基础温习: 理解委托和事件

     委托类似于C++中的函数指针(一个指向内存位置的指针)。委托是C#中类型安全的,可以订阅一个或多个具有相同签名方法的函数指针。简单理解,委托是一种可以把函数当做参数传递的类型。很多情况下,某个函数需要...

    一个银行系统的作业。

    1)程序中使用事件及委托。参照视频中提到的“六步法”,在ATM类中实现一个事件BigMoneyFetched (一大笔钱被取走了),即ATM机在操作时如果用户取款数大于10000,则可以激活这个事件。事件参数也是一个对象(可以...

    JQuery事件委托(适用于给动态生成的脚本元素添加事件)

    移动端遇到一个项目,是一个列表的侧滑栏,在我这里用jq写的交互事件。自测各方面都挺好的,美滋滋的给了研发。研发也美滋滋的开始开发。 但是,好景不长。。。 研发加了ajax事件后,我的交互效果有部分受了影响! ...

    浅析JavaScript的事件代理和委托

    在javasript中delegate这个词经常出现,看字面的意思,代理、委托。那么它究竟在什么样的情况下使用?它的原理又是什么?在各种框架中,也经常能看到...这主要得益于浏览器的事件冒泡机制,后面会详细介绍。下面我们具

    C#委托的课件 林凡的课件

    C#委托的课件 林凡的课件 林凡的课件委托 委托提供了封装方法的方式,包含对方法的引用(事件建立于委托之上) 帮助决定在运行时调用哪个方法 步骤: 1、定义委托 2、实例化委托 3、使用委托

Global site tag (gtag.js) - Google Analytics