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

事件于委托

    博客分类:
  • 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#事件和委托

    在C#编程语言中,委托(Delegates)和事件(Events)是两个极其重要的概念。委托是一种可以持有对具有特定参数列表和返回...正确地理解和使用委托和事件,将有助于开发者编写出更加高效、可维护和可扩展的C#应用程序。

    C#中委托与事件的区别

    在.NET框架的内部,委托和事件被广泛应用于各个基础类库和组件中,为各种异步操作、UI事件处理和系统事件广播等提供了底层的实现基础。它们的存在,是构建具有高度解耦和灵活响应的应用程序的关键。 此外,关于委托...

    观察者模式Vs事件委托Demo

    总结来说,观察者模式关注的是对象状态改变时的被动通知,而事件委托则侧重于事件触发时的主动处理。两者都是为了实现对象间的解耦,提高代码的灵活性和可维护性。在实际开发中,可以根据需求和场景选择合适的设计...

    C# 委托和事件 (详细讲解)

    委托在C#中相当于一种类型,它封装了指向方法的引用,类似于其他语言中的函数指针。委托允许我们将方法作为参数传递给其他方法,或者存储在一个变量中以便稍后调用,这种特性使得委托成为函数式编程的一种工具。 1....

    C# 事件委托简单封装示例

    在C#编程中,事件和委托是核心特性之一,它们为构建可扩展和灵活的代码提供了基础。事件委托的封装是提高代码复用性和模块化的重要...事件委托的封装使得代码结构清晰,提高了组件之间的解耦,有利于代码的维护和扩展。

    C#.Net事件与委托

    在.NET框架中,事件和委托是两种至关重要的概念,它们为对象间的通信提供了一种安全、灵活的方式。本文将深入探讨C#中的事件和委托,以及它们如何在实际编程中应用。 首先,让我们来理解什么是委托。在C#中,委托是...

    C#事件和委托定义与使用(有两个很形象的例子)

    在C#中,委托是一种类型,它代表了方法的引用,类似于函数指针。委托可以被视为指向一个或多个方法的“签名”的引用。使用委托,我们可以将方法作为参数传递给其他方法,或者存储在变量中以备后用。这样,我们就能够...

    对C#委托及事件委托的理解

    委托在C#中是一种类型,它类似于函数指针,但比函数指针更安全,因为它是类型安全的。声明委托时,我们需要使用`delegate`关键字,定义一个方法签名,表示该委托可以指向的方法应具有的参数列表和返回类型。例如,`...

    C#事件与委托实例Demo源代码

    在.NET框架中,C#语言提供了强大的事件和委托机制,使得开发者可以轻松地实现对象间的通信和异步编程。本文将深入探讨C#中的事件和委托,并通过一个实例Demo来阐述其工作原理和使用方法。 首先,让我们了解什么是...

    C#事件的委托,可以看看

    这类似于其他语言中的函数指针,但委托是类型安全的,支持多播(即一个委托实例可以链接多个方法)。在给定的代码中,`ComputerChangHender`就是一个自定义的委托类型,它定义了一个接受一个字符串参数和一个整数...

    .NET委托与事件用例

    委托和事件的组合使代码更加模块化,有助于降低耦合度。它们在用户界面编程中尤其有用,比如Windows Forms和WPF,其中控件可以引发事件,如按钮点击,而其他代码可以注册这些事件并提供响应。 在异步编程中,委托也...

    winform委托和事件经典例子

    在C#中,委托是一种类型,它类似于函数指针,但更安全且类型安全。委托允许我们将方法作为参数传递,或者存储在一个变量中,以便稍后调用。这种机制使得我们可以实现回调函数和事件处理程序。在Winform应用中,委托...

    C#委托和事件、事件的工作原理

    委托类型的定义类似于方法的定义,但它没有方法体。例如,public delegate void DelegateClassHandle();定义了一个名为DelegateClassHandle的委托类型,该委托类型可以指向任何返回值为void的方法。 事件是基于委托...

    线程-异步事件委托

    在IT领域,线程和异步事件委托是编程中非常重要的概念,特别是在多任务处理和高性能应用程序设计上。本文将深入探讨这两个主题,以及如何在VB2008(Visual Basic 2008)中使用它们。 首先,让我们了解什么是线程。...

    事件与委托工程示例代码

    在.NET框架中,事件和委托是两种至关重要的概念,它们为对象间的通信提供了一种安全、灵活的方式。本文将深入探讨这两个概念,并结合提供的代码示例进行解释。 首先,我们来理解什么是事件。在C#中,事件是一种特殊...

    C#自定义事件和委托

    委托则可以看作是引用方法的类型,类似于函数指针。通过委托,我们可以将方法作为参数传递,或者在一个类中调用另一个类的方法。 在上面的例子中,`IOMonitor`类定义了一个名为`DataReceived`的事件,它使用`...

    JavaScript之事件委托.pdf

    综上所述,事件委托是JavaScript中一种高效且实用的事件处理技术,尤其适用于大型、动态的Web应用,它使得代码更加简洁、可维护,并提升了页面的响应速度。理解并熟练运用事件委托,对于提升JavaScript编程水平和...

    委托与事件白话讲解

    在C#中,委托和事件是两个至关重要的概念,它们在处理回调函数和异步编程时发挥着核心作用。下面我们将深入探讨这两个主题。 首先,让我们了解一下**委托**。委托在C#中可以被视为一种类型,它类似于函数指针,但...

Global site tag (gtag.js) - Google Analytics