掌握C#里的事件

ZDNet软件频道 时间:2002-10-15 作者:BUILDER.COM |  我要评论()
本文关键词:
在C#入门系列的这个部分,我将介绍在Windows窗体环境下使用事件的一些基本要点,还要介绍如何使用事件句柄。
事件是通过点击按钮或者类似动作而启动的类的成员。事件可以对你所指定的任何对象作出任何回应。事件方法能追踪输入,例如点击按钮,也能够跨方法报告这个动作。

在C#入门系列的这个部分,我将介绍在Windows窗体环境下使用事件的一些基本要点,还要介绍如何使用Visual Studio增加进程来处理一个窗体事件,也叫做事件句柄。我还会探查事件方法背后的代码,这样你就能够严格地在代码编辑器里增加一个事件,而不用使用可视化开发的环境。


给新手的几句话

本文是“C#新手”系列的一部分,这个系列目的是为了减少学习的困难,帮助新手顺利地开始使用C#。本系列的第一篇文章讲解了使用窗体类的基础。在我们的第二篇文章里,我们向你演示了如何打开窗体的特定实例——这是创建多窗体Windows应用程序时至关重要的技能。


什么是事件?

事件就是在其被触发或启动时所执行的代码。事件是由用户的动作、程序代码或者系统启动的。

从一个更加正式的角度——以及C#的角度——来看,事件是一个对象成员,明确地讲就是方法。(本文主要关注的是Windows的窗体,但是我们要讨论的规则同样能够用于对象,例如按钮及其他控件。

事件方法,或者叫事件过程,包含了带有两个自变量的过程名。第一个自变量,或者叫参数,是启动事件的对象;第二个参数是System.EventArgs类型。此外你必须使用+=操作符将事件方法作为代表连起来,这个代表是替代另一个方法的方法。你也许熟悉+=在C#里的加派操作数。

要让这个问题具体化,我们还是来看看对一个叫做Form1的窗体类的点击事件是如何工作的。(你会在InitializeComponent方法里找个这行代码,这个方法在Windows窗体设计器所生成代码的“隐藏”区域里):

this.Click += new System.EventHandler(this.Form1_Click);

和这个事件方法相关的框架是:

private void Form1_Click(object sender, System.EventArgs e) {
 
}

从一个事件调用另一个事件是很简单的。例如,以下的代码是button1的Enter事件启动时弹出的一个信息框:

private void button1_Enter(object sender, System.EventArgs e) {
   MessageBox.Show ("The Button's Enter event has been fired",
      "C# for Newbies", MessageBoxButtons.OK, 
      MessageBoxIcon.Exclamation);
}

要从另一个事件里调用这个button1 Enter事件,需要在那个事件里加入一个对button1_Enter方法的调用。在窗体的DoubleClick事件中,代码是:

private void Form1_DoubleClick(object sender, System.EventArgs e) {
   button1_Enter (sender, e);
}


现在当这个窗体被双击时,通过按钮的Enter事件启动的信息框就会显示出来,如A

图A

要发出一个像这样的通知,使用事件是很方便的

你可能没有System.EventArgs来传递事件;例如,你也许会在事件之外调用它。但是这不是个大问题,因为你可以创建一个,再像下面这样调用一个事件方法:

System.EventArgs g = new System.EventArgs();
button1_Enter (this, g);


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134