首页 > 编程 > .NET > 正文

.Net平台Windows Forms程序设计简介 -2

2024-07-10 13:08:00
字体:
来源:转载
供稿:网友
属性

  我们知道,在面向对象的程序设计中,一个类有很多成员,这些成员包括域(fields)、构造函数、析构函数、方法(methods)、事件及属性(properties)等。这些成员有的表示对象的一个特征,也有的使用对象执行一个操作。

  .net类中属性(properties)非常重要,其主要用于表示对象的特征,如一个窗体的大小、位置、是否可以最大化、是否显示控制栏及窗体的背景色彩等等。属性(properties)对程序员是公开的,你可通过简单的“=”(赋值号)就可访问属性。在.net类中,有的属性只能读、有的只能写,当然大多数属性是可以读写的,这主要取决于类中对属性的定义。如下面的代码在form(窗体)类中定义了一个控制栏是否显示的属性:

public bool controlbox {get; set;} [c#]

public property controlbox as boolean[visual basic]

  有了上面的定义,要使一个窗体不显示控制栏,用c#只需要使用下面的简单语句即可:

form1.controlbox=false;

  在windows forms程序设计中,我们都是通过设置大量的属性值,形成一个非常漂亮的窗体的。另外,有了属性,也增加了语言对rad(快速开发)的很好支持。

  控件:

  windows forms程序设计中,仅仅有窗体往往是不够的,还必须有通过众多的控件来充实窗体的内容,达到友好、人性化的人机操作界面设计。这此,.net类库为我们准备了几乎windows forms中会要用到的各种元素类,一般情况下,我们把这些类或其实例称为控件,窗体就是通过各种各样的控件充实起来的。

  其实,控件这一概念是在rad(快速开发)工具中运用起来的,这些开发工具把很多常用的类及相关内容非常形象化的放在工具栏或面板中,你只需要通过简单的鼠标拖放等操作就可以为程序添加各种各样的控件并设置控件的各种属性,由开发工具自动生成相应的代码。通过使用控件,使你的整个开发变得更加简单了。

  在.net类库中,基本上所有的控件都是由system.windows.forms.control类继承而来的,该类主要提供非常基本的、让类能实现形象化显示、处理各种键盘及鼠标的输入并响应各种事件等。

  由于大多数控件都是从control类中继承,而该类中有一个属性即controls表示当前控件的所有子控件集合。因此,自己写代码把一个控件添加到窗体中非常简单,只需要把所要添加的控件对象加入当前窗体的controls属性集合中即可,如下面的c#代码:

form1.controls.add(new button());

  将在窗体form1上添加一个按钮控件。

  另外,你还可以定义自己的控件,主要通过system.windows.forms.usercontrol类(该类是control的派生类),当然使用control类一样可以。

3 windows forms程序设计简单步骤

  通过前面的介绍,大家可能已经大概知道一个windows forms的设计过程了。一般情况下,设计开发一个windows forms程序的步骤如下:

  第一步:程序需求分析

  作为一个成熟的程序员,都会对程序的需求作比较细致详细的分析,并不断的与相关人员交流沟通,最终得到一个比较可行的解决方案。需求分析在程序设计中是必不可少的,在此就不过多讲述。

  第二步:设计你的类及对象

  面向对象程序设计中最为关键的部份就是对程序处理问题的对象化。因此,在书写程序代码前必须花更多的时间在程序所解决问题的对象化及类设计上。并解决问题的各种事务逻辑及流程。

  一般情况下,面向对象的设计分为两个阶段,即高层设计和低层设计。

  高层设计阶段开发系统的结构,构造待开发软件的总体模型。在这个阶段,标识出在具体的计算机环境中进行问题求解所需要的概念,增加了一批需要的类,这些类包括那些使得软件系统能够与外部世界进行交互的类。并输出适合应用软件要求的类、类之间的关系及应用子系统的视图规格说明。

  低层设计集中于类的详细设计阶段。类设计的目标是形成单一概念的模型,一个独立的类表示一个概念,以及设计的部件应该是可复用的和可靠的。

  类的设计过程中需要采用信息隐蔽、高内聚低耦合等设计原则。在面向对象的技术中,利用即存类的复用是一个很大的优点。

  在windows forms的类设计过程中,一定要充分运用各种.net已存在类的复用,并在其基础上增加自己类所需的部件及功能等。
第三步:界面设计(设计窗体及控件)

  由于windows forms程序主要讲究人机界面的美观性及友好性。因此,除了书写效率非常高的代码及算法实现程序功能外,windows forms中还将把界面的设计作为一个重点。

  界面设计主要是通过设置控件及窗体的各种位置、大小、形状、色彩等外观属性而实现。当然,要想实现非常友好的用户界面,完全通过在记事本等软件进行代码的录入及凭感觉调整窗体及各种控件的大小、位置及外观等是很难完成的(仅管你通过记事本也能写比较大的程序),我们必须借助各种各样的开发工具,特别的快速开发(rad)工具的使用。

  当前,有很多可以编写.net程序的rad工具软件,其中最为完善,功能最为强大,非微软的visual studio .net莫属。该软件是一个集多种语言为一体的快速开发(rad)工具,提供强大的软件工程管理、计算机资源管理、智能代码感知技术及强大的程序试调等功能。使用visual studio .net开发你的各种.net应用程序,一切都将会变得事半功倍,而且你会发觉编程变得是那么轻松的事儿。

  通过使用visual studio .net,你设计窗体及程序界面变得很简单了。你只需要单的鼠标拖放、位置调整等操作就可以完成程序的大多数设计。visual studio .net其自动生成的代码模板及规范化的注释,还可以通过非常简单的双击控件为其添加各种事件响应函数等。另外使用visual studio .net,还能很好支持.net的多语言交叉继承等功能。

  第四步:为窗体及控件添加各类事件响应方法

  在窗体及界面设计完成后,余下的事就是给程序添加具体的源代码了。由于,windowsforms基本上是通过由引发事件到响应事件再到执行事件这样一个过程来达到与用户的交互的,因此,我们所写的源代码大多数都是控件或窗体的各种事件响应方法,同加上一些公用的函数等,有效组合到一起就可以使你的程序按你的要求办事了。

  如果你使用visual studio .net,那么,添加事件将是非常简单的,大多数时候你只需要双击控件就可以为控件添加常用的响应方法。其它的事件响应方法也可以通过其智能代码感知技术的帮助下很快地加入到程序中。

  第五步:启动程序

  一切就绪过后,现在可以写启动程序的代码了。当然,如果你使用visual studio .net,可能关于启动程序的代码它都为了准备好了。前面介绍过,启动windows forms程序只需要通过application类即可,该类是一个封装类,大多数的方法都是表态的,不能创建该类的实例即可以使用。使用application一般情况下需要一个窗体(不是绝对需要),而全面你所设计的窗体类此时可用上了,直接构造你窗体类的一个实例即可。而application类将会为你做很多事,包括内存及资源分配,各种底层组件的调用等。

  4 一个完整而简单windows forms程序

  下面我们将列出一个用c#写的完整整而非常简单的windows forms程序,该程序通过继承定义了一个自己的窗体类helloworld。启动程序将看到程序上有一个按钮控件,点击按钮控件将显示一个弹出菜单。

  程序几乎包括了前面所讲的各种要点如窗体、控件、控件属性、事件、事件响应等。代码中包括了具体的注释说明,请大家仔细体会!
////////helloworld.cs源程序

using system;//引入system命名空间,其包括了.net中大多数的基本数据类型,如int,string等

using system.drawing;//引入system.drawing命名空间,其中包括了windows forms中的各种基本的图像操作要素

using system.windows.forms;//引入system.windows.forms命名空间,其定义了windows forms程序中所涉及到的大部份类,如窗体、控件、application类等

public class helloworld:system.windows.forms.form //通过继承form而定义一个helloworld的窗体类,该类具有form类的所有成员及特性

{

private system.windows.forms.button button1;//定义helloworld类的一个成员(一个按钮)

public helloworld()//helloworld类的构造函数

{

button1=new button();//生成一个button实例,也可以说成初始化helloworld类的button1成员

button1.text="testbutton";//设置按钮button1的text属性值

button1.location=new point(100,100);//设置按钮button1的location值

button1.click+=new system.eventhandler(mymethod);//为按钮button1的click事件添加响应方法

this.text="hello world!";//设置自定义窗体的文本(text)属性,该属性将成为窗体的标题

this.controls.add(button1);//把按钮窗体添加到窗体中,使窗体可以显示。

}

public static void main()//程序入口

{

application.run(new helloworld());//生成helloworld实例并通过application.run()静态方法启动程序,

}

private void mymethod(object sender,system.eventargs e)//定义事件响应函数,请注意参数的使用,其与system.eventhandler代表中的参数要一致

{

messagebox.show("you have clicked the button","information");//使用弹出框弹出提示信息。

}

}


  编译该程序的方法,直接把代码拷到记事本中,保存为helloworld.cs文件,然后在命令行输入csc helloworld.cs即可编译(我们假设helloworld.cs在当前目录上)。编译完成后将生成一个名为helloworld.exe的文件,些时直接在命令行输入helloworld程序即可运行程序。



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表