一、事件
(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);
}
}
分享到:
相关推荐
本PPT详细的介绍了C#中的事件与委托,有助于初学者的学习 喜欢的朋友可以下载
/// /// 委托和事件有什么不同 /// 1:关键字不同,委托是关键字delegate 事件是... /// 事件的作用于委托变量一样,只是功能上委托变了有更多的限制 /// 只能通过+=或者-=的方式,只能在类的内部调用事件 ///
委托与事件讲解ppt,可以让从0开始学C#的人了解委托与事件的区别和联系
利用委托于与事件的原理,实现窗体的传值,在这个程序里面应用了正则表达式,委托,事件的原理。能够帮助你近一步了解窗体的复杂操作!!
这本资料给我们提供了一个很好的例子,水浒烧水的案例,相信会对大家有用,所以就贡献出来于大家分享!
超级实用的观察者模式案例
此教案重点介绍.NET平台上的重要技术——委托,以及对建立于委托基础之上的.NET事件响应机制的深入剖析。包括两个29页的PDF文档及数个VS2010示例。前几讲的教案请访问http://bitfan.download.csdn.net/下载,更新...
1,资源来源于网络,共享 2,基于两个窗体的信息交互 3,使用了委托的方式实现信息交互 4,父窗口调用子窗口,并通过子窗口控制父窗口
此文档有助于学习C#委托、事件和Observer设计模式。
在javasript中,代理、委托经常出现。...这主要得益于浏览器的事件冒泡机制,下面我们具体举个例子来解释如何使用这个特性。 这个例子主要取自David Walsh的相关文章(How JavaScript Event Delegation
事件委托的原理依赖于事件冒泡,可以通过给父元素的事件委托来确定是哪个子元素触发了事件从而做一系列操作。 使用事件委托的优点 1、操作子元素时不用一一遍历,可以根据事件触发的对象而进行相应操作 dom结构如下...
经典观察者应用实例
事件委托是Jquery中一种事件绑定的方式,不同于常见的事件绑定方式将事件绑定在目标元素上,而是将事件绑定在父级元素上通过事件冒泡来执行绑定函数。 //常见的事件绑定(Jquery) $(element).click(function(){ //...
相当于创建了一个按照组合的顺序一次调用的新委托对象 d. 委托的组合一般是给事件用的,用普通的委托的时候很少用 窗口传值的方式: 1. 使用静态字段(由于消耗大量资源,且资源得不到及时的释放,不建议使用) 2....
委托类似于C++中的函数指针(一个指向内存位置的指针)。委托是C#中类型安全的,可以订阅一个或多个具有相同签名方法的函数指针。简单理解,委托是一种可以把函数当做参数传递的类型。很多情况下,某个函数需要...
1)程序中使用事件及委托。参照视频中提到的“六步法”,在ATM类中实现一个事件BigMoneyFetched (一大笔钱被取走了),即ATM机在操作时如果用户取款数大于10000,则可以激活这个事件。事件参数也是一个对象(可以...
移动端遇到一个项目,是一个列表的侧滑栏,在我这里用jq写的交互事件。自测各方面都挺好的,美滋滋的给了研发。研发也美滋滋的开始开发。 但是,好景不长。。。 研发加了ajax事件后,我的交互效果有部分受了影响! ...
在javasript中delegate这个词经常出现,看字面的意思,代理、委托。那么它究竟在什么样的情况下使用?它的原理又是什么?在各种框架中,也经常能看到...这主要得益于浏览器的事件冒泡机制,后面会详细介绍。下面我们具
C#委托的课件 林凡的课件 林凡的课件委托 委托提供了封装方法的方式,包含对方法的引用(事件建立于委托之上) 帮助决定在运行时调用哪个方法 步骤: 1、定义委托 2、实例化委托 3、使用委托