一、事件
(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#编程语言中,委托(Delegates)和事件(Events)是两个极其重要的概念。委托是一种可以持有对具有特定参数列表和返回...正确地理解和使用委托和事件,将有助于开发者编写出更加高效、可维护和可扩展的C#应用程序。
在.NET框架的内部,委托和事件被广泛应用于各个基础类库和组件中,为各种异步操作、UI事件处理和系统事件广播等提供了底层的实现基础。它们的存在,是构建具有高度解耦和灵活响应的应用程序的关键。 此外,关于委托...
总结来说,观察者模式关注的是对象状态改变时的被动通知,而事件委托则侧重于事件触发时的主动处理。两者都是为了实现对象间的解耦,提高代码的灵活性和可维护性。在实际开发中,可以根据需求和场景选择合适的设计...
委托在C#中相当于一种类型,它封装了指向方法的引用,类似于其他语言中的函数指针。委托允许我们将方法作为参数传递给其他方法,或者存储在一个变量中以便稍后调用,这种特性使得委托成为函数式编程的一种工具。 1....
在C#编程中,事件和委托是核心特性之一,它们为构建可扩展和灵活的代码提供了基础。事件委托的封装是提高代码复用性和模块化的重要...事件委托的封装使得代码结构清晰,提高了组件之间的解耦,有利于代码的维护和扩展。
在.NET框架中,事件和委托是两种至关重要的概念,它们为对象间的通信提供了一种安全、灵活的方式。本文将深入探讨C#中的事件和委托,以及它们如何在实际编程中应用。 首先,让我们来理解什么是委托。在C#中,委托是...
在C#中,委托是一种类型,它代表了方法的引用,类似于函数指针。委托可以被视为指向一个或多个方法的“签名”的引用。使用委托,我们可以将方法作为参数传递给其他方法,或者存储在变量中以备后用。这样,我们就能够...
委托在C#中是一种类型,它类似于函数指针,但比函数指针更安全,因为它是类型安全的。声明委托时,我们需要使用`delegate`关键字,定义一个方法签名,表示该委托可以指向的方法应具有的参数列表和返回类型。例如,`...
在.NET框架中,C#语言提供了强大的事件和委托机制,使得开发者可以轻松地实现对象间的通信和异步编程。本文将深入探讨C#中的事件和委托,并通过一个实例Demo来阐述其工作原理和使用方法。 首先,让我们了解什么是...
委托和事件的组合使代码更加模块化,有助于降低耦合度。它们在用户界面编程中尤其有用,比如Windows Forms和WPF,其中控件可以引发事件,如按钮点击,而其他代码可以注册这些事件并提供响应。 在异步编程中,委托也...
在C#中,委托是一种类型,它类似于函数指针,但更安全且类型安全。委托允许我们将方法作为参数传递,或者存储在一个变量中,以便稍后调用。这种机制使得我们可以实现回调函数和事件处理程序。在Winform应用中,委托...
委托类型的定义类似于方法的定义,但它没有方法体。例如,public delegate void DelegateClassHandle();定义了一个名为DelegateClassHandle的委托类型,该委托类型可以指向任何返回值为void的方法。 事件是基于委托...
在IT领域,线程和异步事件委托是编程中非常重要的概念,特别是在多任务处理和高性能应用程序设计上。本文将深入探讨这两个主题,以及如何在VB2008(Visual Basic 2008)中使用它们。 首先,让我们了解什么是线程。...
在.NET框架中,事件和委托是两种至关重要的概念,它们为对象间的通信提供了一种安全、灵活的方式。本文将深入探讨这两个概念,并结合提供的代码示例进行解释。 首先,我们来理解什么是事件。在C#中,事件是一种特殊...
委托则可以看作是引用方法的类型,类似于函数指针。通过委托,我们可以将方法作为参数传递,或者在一个类中调用另一个类的方法。 在上面的例子中,`IOMonitor`类定义了一个名为`DataReceived`的事件,它使用`...
综上所述,事件委托是JavaScript中一种高效且实用的事件处理技术,尤其适用于大型、动态的Web应用,它使得代码更加简洁、可维护,并提升了页面的响应速度。理解并熟练运用事件委托,对于提升JavaScript编程水平和...
这类似于其他语言中的函数指针,但委托是类型安全的,支持多播(即一个委托实例可以链接多个方法)。在给定的代码中,`ComputerChangHender`就是一个自定义的委托类型,它定义了一个接受一个字符串参数和一个整数...
在C#中,委托和事件是两个至关重要的概念,它们在处理回调函数和异步编程时发挥着核心作用。下面我们将深入探讨这两个主题。 首先,让我们了解一下**委托**。委托在C#中可以被视为一种类型,它类似于函数指针,但...