ITPub博客

首页 > 应用开发 > IT综合 > C#窗口事件处理初探 (转)

C#窗口事件处理初探 (转)

原创 IT综合 作者:amyz 时间:2007-08-15 15:13:42 0 删除 编辑
C#窗口事件处理初探 (转)[@more@]

C#窗口事件处理初探

XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

事件驱动(Event Driven)是C#窗口程序设计的核心,其重要性就相当于VC中的消息映射,不了解事件驱动就无法深入窗口程序设计的殿堂。在C#语言中,事件的处理主要有两种方法:委托式的事件处理模式(Delegation Event Model)与对可重载方法(Event Method)的重载。

1、委托式事件处理

  委托式事件处理模式,顾名思义,就是将特定的事件委托给负责事件处理的方法来进行。

  在.NET中,类有数据成员(Data Member)与函数成员(Function Member)。此外还有 “事件成员(Event Member)”,来进行事件驱动的处理。

  事件成员就是那些与该类的对象相关的事件。它定义了在一个对象中会有哪些相关的事件发生。不同的类可以有不同的事件成员。

  事件处理可通过委托关系来进行。委托关系可以这样来建立:

  object.Event+=new EventHandle(Method);

  其含义是:如果对象object发生了Event事件,就交由方法Method来处理。一个对象可以委托多个不同的处理,“+=”用来增加新的委托关系。Method是真正进行事件处理的地方,格式为:

  public void Method(object sender,EventArgs e);

  EventArgs是.NET framework中有关事件的基础类,所有发生的事件都被包装成EventArgs类或其子类的对象。当事件发生时,Method会收到这两个参数。一旦建立了委托关系,系统自动在特定事件发生时,转而执行您所委托的事件处理方法。

下面举一个简单的例子,运行时首先产生一个窗口,当点击窗口上的按钮时,程序结束。代码如下:

using System;

using System.windows.Forms;

class Form1:Form

{

  public static void Main()

  {

  Application.Run(new Form1());

  }

 

  public Form1():base()

  {

  Text="事件处理示例";

  Button button1=new Button();

  button1.Text="点击";

  //将button1的Click事件委托给countClick方法

  button1.Click+=new EventHandler(this.countClick);

  //将button1加到窗口中。

  Controls.Add(button1);

  }

  public void countClick(object sender,EventArgs e)

  {

  Application.Exit();

  }

}

2、重载事件方法

  在C#中,针对不同类所相关的事件,除了定义有事件成员外,也定义了可重载的事件方法,可通过重载这些事件方法来设计你所希望的对应事件处理。这些可重载的事件方法名称皆以“On”开头,且被声明为“virtual”,一个被声明成virtual的方法,就代表它可被重载,被声明成override的方法也代表它可被重载,如果声明成abstract则必须被重载。例如按钮的Click事件,就有一个对应的可重载的OnClick事件方法。

  仍然以上面的例子来说,代码如下:

using System;

using System.Windows.Forms;

class Button1:Button

{

  public static void Main()

  {

  FoRM form1=new Form();

  form1.Text="事件处理示例";

  Button1 button1=new Button1();

  button1.Text="点击";

  form1.Controls.Add(button1);

  Application.Run(form1);

  }

  protected override void OnClick(EventArgs e)

  {

  Application.Exit();

  }

}

  通过以上的例子看出,在C#中进行事件处理是相当简便的。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10752019/viewspace-958385/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3982
  • 访问量
    7896243