日期:2011-03-14  浏览次数:20463 次

引言:

  微软的.Net平台堪称为新一代的互联网平台。对于技术开发人员来说,.Net平台的两大特性是非常卓越的,首先是其所提供的公共语言运行时,也就是公用语言运行平台,另一方面就是庞大而全面的统一编程类。

  C#语言是微软公司针对.Net平台才推出来的一门新语言,作为.Net平台的第一语言,它几乎集中了所有关于软件开发和软件工程研究的最新成果。其不但继承了C++、Java等面向对象的强大功能特性,同时还是继承了VB、Delphi等编程语言的可视化快速开发功能,其是当前第一个完全面向组件的语言。

  .Net平台中的程序设计主要分为以下四个方面:Web Forms、Windows Forms、Web Service及Windows Service,下面我向大家介绍Windows Forms程序的设计。

  1、基本知识要点

  C#语言:C#语言自C/C++演变而来。它是现代、简单、完全面向对象和类型安全的。如果您是C/C++程序员,学习曲线将会很平坦。许多C#语句直接借用您所喜爱的语言,包括表达式和操作符。C#是现代的编程语言。C#减少了C++的一些特性,不再有宏、模板和多重继承。使编程更方便的新功能是严格的类型安全、版本控制、垃圾收集(garbage collect)等等。所有的这些功能的目标都是瞄准了开发面向组件的软件。因此也把C#称为面向组件的语言。

  类:类是一组具有相同数据结构和相同操作的对象的集合。类是对一系列具有相同性质的对象的抽象,是对对象共同特征的描述。比如每一辆汽车是一个对象的话,所有的汽车可以作为一个模板,我们就定义汽车这个类。C#是面向对象的,而且所有的C#代码都必须放在一个类中,不在有全局变量及全局名称等。

  .Net类库:微软为.Net平台设计了非常庞大编程类。这些类包括从操作系统的底层到视窗界面,从数据库开发到Web服务等,涉及面非常广。这些类都是在公用语言运行时上,而且是管理、安全的代码。通过使用.Net提供的“超”类库,你可非常轻松的开发.Net平台上的四大类程序:即Web Forms、Windows Forms、Web Service及Windows Service。

  Windows Forms程序:类似于Windows程序,是指能在微软公司操作系统平台如Windows 98,Windows NT及Windows2000等平台上面运行的,有着非常漂亮脸蛋(如窗体、菜单、各种控制等)的程序。Windows Forms是在.Net平台中初次出现的概念,也称为Windows窗体,由于是.Net Windows Forms程序,因此你的视窗系统就必须首先安装.Net平台,才能运行。

  事件:在Windows系统中,我们对窗体的各种操作都将为引发一个事件,如按一个按钮引发一个点击(Click),在文本框中输入内容时将引发文本框的文本改变(Change)事件。事件产生时将要发送消息,并由专门的消息处理程序翻译并处理消息。

  Visual Studio .Net:是微软.Net平台上的一个功能强大的、集成多种开发语言的软件开发工具。通过该开发工具,大多数.Net编程语言都可以实现RAD(快速开发)。
2 Windows Forms中的几个基本概念

  启动程序

  Windows Forms程序与一般运用程序不同的是其是通过非常漂亮的外观窗体及窗体上各种控件与用户交互。程序不是一步一步的执行,而是有一个消息循环,根据用户的各种操作所引发的事件选择执行相应的功能。为了能管理、解释Windows的各种消息、用户键盘或鼠标输入并响应各种事件,.Net类库为我们提供了一个专门用于启动Windows程序的类:System.Windows.Forms.Application,通过使用Application类,我们可以非常容易就启动一个Windows Forms程序,并把有关消息的解释、键盘及鼠标的输入管理、各种事件的响应等都交由Application负责处理。

  另外,在Windows应用程序中,与一般的运用程序一样,程序的入口也一个类中的Main()方法(注意Main要求首字母大写),同样必须是static(静态)方法,否则程序将找不到入口点。

  下面,是C#中一个非常简单的启动Windows程序的例子:

static public void Main()

{
 Application.Run(new Form());

}

  另外,Windows Forms程序的结束也是由Application类来进行的。

  窗体

  Windows操作系统最主要的成功得源于其漂亮的外观,即窗体。一般的Windows程序都有一个窗体,你可以把各种各样的控件(如标签、文本框、命令按钮等)放置在窗体上,组成一个非常人性的人机界面。在.Net Windows Forms中使用窗体只需从System.Windows.Forms.Form类或其派生类的创建一个对象即可。

  下面的代码,是C#中一个非常简单的继承Form(窗体)类的例子:

public class myForm:System.Windows.Forms

{

private System.Windows.Forms.Button button1;

public myForm()

{

}

}

  在自定义的窗体类myForm中增加了一个Button(按钮)对象。
事件

  在Windows Forms程序中,几乎用户的大多数都将操作都将产生Windows事件,如按一个按钮引发一个点击(Click),用户移动鼠标有相应鼠标移动的事件等;有一些事件是不是用户操作产生而是系统自动产生的,如数据库链接断开、时间到达某一时刻或是使用外设时未就绪等。

  在Windows Forms中,每一个Windows控件有非常多的事件使其可以达到与用户交互,事件的监视及管理是由前面所说Application类负责的。在产生一个事件时一般经引发一系列操作,如点击“刷新”按钮使用程序重新从读取数据库中的数据、点击窗体上的关闭图标将关闭窗口或退出程序等。程序员就是通过书写事件的响应方法(即事件所引发的操作)来达到对程序的控制及交互。

  在.Net中,事件的声明是通过event(事件)关键字来声明的,事件是一个类的成员之一。

  .Net中,事件的响应及处理是通过一个新的数据类型delegate(代表)来处理的,delegate(代表)非常类似于C/C++的函数指针,但不同的是, delegate(代表)是安全的、受管理的。

  如下面分别用三种语言声明一个控件Click事件的代码:

public event EventHandler Click; [C#]

Public Event Click As EventHandler [Visual Basic]

public: __event EventHandler* Click; [C++]

  在上面的代码中,EventHandler是一个代表类型,其在.Net类库中的声明如下:

public delegate void EventHandler(object sender,EventArgs e); [C#]
Public Delegate Sub EventHandler(ByVal sender As Object,ByVal e As EventArgs) [Visual Basic]
public __gc __delegate void EventHandler(Object* sender,EventArgs* e); [C++]

  事件响应方法

  由于事件是解释及管理是由Application对象进行的,程序员不需要知道用户何时响应事件或者是响应了什么事件,只需要为事件添加响应方法即可。通过使用delegate(代表),你可以使用“+=”(加等于)操作符非常容易地为.Net类中的一个事件添加一个甚至多个响应方法,还可以通过非常简单的“-=”(减等于)操作符取消这些响应方法。如下面,我们为一个按钮的Click事件添加响应方法的代码:

button1.Click += new System.EventHandler(MyMethod);

  其中,MyMethod函数的定义如下:

void MyMethod(object sender, System.EventArgs e);

  这样当用户点击按钮或者是其它方法引发其Click事件时,MyMethod函数中