开发者社区


项目管理 | IT/商务管理 | 职涯
首页 - 管理和职涯
管理&职涯
全文搜索:   

看实例,尝试C#
作者: ZDNet China Developer
2001-06-14 17:58:59



一个MFC应用程序包含了类CWinApp 的派生类的单一的实例,该派生类重载了诸如InitInstance 和ExitInstance 这样的方法,用来实现同应用程序相关的特定行为。MFC 库提供了对WinMain 方法的实现,该方法可以找到类CwinApp派生出来的对象,并可以对该对象调用诸如InitInstance, Run 和ExitInstance这样的方法。WinForms Application 类是个密封类。

在C#中,一个密封类是不能拥有派生类的。对一个类进行密封,可以防止该类被其它类继承,并且可以在调用虚拟方法时有机会进行优化。类Application 提供了静态方法,如Run方法,用来管理应用程序。所以,无论是派生还是重载,应用程序的初始化和终止代码分别放在调用Run的之前和之后。

new运算生成了GreeterForm类的一个新对象, 并调用GreeterForm 构造函数(第17行)来初始化该对象。该构造函数调用InitializeComponent方法。在Visual Studio.NET中,Windows表单设计向导可以交互式地创建表单, 你可以选取控件,在表单中作图,这个工作类似于在Visual C++ 6.0中使用Dialog Editor。不同的是,在Visual C++ 6.0中添加的是资源,在C#中,添加到表单类中的是数据成员,即C#中的域(第12-15行),并且添加代码到InitializeComponent 中,用于创建每个控件,并且设置控件的属性。同时,也定义了表单控件的容器, 在InitializeComponent 中,把每个控件的引用也添加到容器中。可以生成容器和控件中的数据成员的类型的完整的限定名称。

一旦添加了诸如按钮这样的控件之后,你就可以双击该控件,加入事件句柄。GreeterForm.greeting_Click 方法处理greeting 按钮所产生的点击事件。注意到该类中没有类似于信息映射机制的实现,现在你要问:事件句柄是如何同点击按钮事件联系起来的?答案是:事件句柄是通过代表同事件联系的。

通过定义类的一个称为事件的成员,一个C#类可以定义该事件可以发出的通知。System.WinForms.Button 定义了一个点击事件:

public event EventHandler Click;

每次点击按钮时,按钮对象就会生成或者发送Click 事件。把EventHandler 代表的实例添加到按钮的Click 事件中,就可以把 greeting_Click 事件处理句柄同点击按钮事件联系起来(第50行)。 一个代表用来封装对一个类的方法的引用,被封装的该方法既可以是静态的,也可以是实例方法。因为greeting_Click 是GreeterForm的实例方法,EventHandler 代表既封装了对GreeterForm 对象的引用,也封装了对greeting_Click 方法的引用。

【上一页】 【下一页】
声明:
Builder.com.cn(原ZDNet China应用开发频道)原创文章版权所有,未经许可严禁转载,且不构成投资建议。
近期相关报道:
实用技术文档
J2me XML
C/C++ C#
Java Oracle
Mysql .Net
VB.NET CSS
SQL Server 数据库
SQL UNIX
Linux Jsp
PHP Perl
Javascript IIS
XHTML ColdFusion
ASP/ASP.NET Apache
AJAX
订阅技术邮件
订阅"技术圈"杂志!请在下面选择您感兴趣的专题,填写e-mail地址,然后按订阅按钮:
应用开发管理
VS.NET 周刊
Database 周刊
WEB Service周刊
JAVA 周刊
IT 认证
Windows服务器周刊
互联网开发
当Windows Server 2008专家得5000元现金大奖
CNET NETWORKS 中国: 爱卡汽车网 | CNET科技资讯网 | e询网 | CWEEK | 蜂鸟网 | GameSpot China | 个人电脑 | PChome | SPN | 网友世界 | ZDNet China | 中关村在线
CNET NETWORKS 美国: BNET | CNET.com | CNET Download.com | CNET News.com | CNET Reviews | CNET Shopper.com | GameSpot | MP3.com | mySimon | Release 1.0 | Search.com | TechRepublic | TV.com | Webshots | ZDNet
Copyright (c) 2006 CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
ZDNet 公司标识是 CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号