C#窗口事件处理初探

C#窗口 事件处理初探

事件驱动 (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#中进行事件处理是相当简便的。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus