当前位置:文档之家› 窗体设计基础1

窗体设计基础1

第1章设计简单应用程序随着计算机应用的普及和Windows操作系统的出现,大量的应用程序希望用户界面友好,操作简捷。

Windows应用程序的主要特点是:(1)使用图形用户界面(GUI,Graphical User Interface);(2)使用面向对象方法编程;(3)基于消息驱动程序。

微软的.NET框架提供了编写Windows应用程序的全面支持。

Windows应用程序设计主要完成两部分工作:界面设计和程序功能设计。

框架.NET是微软公司2000年推出的面向互联网时代构筑的新一代平台,微软公司开发了一整套基于.NET框架(.NET Framework)设计的工具组件,集成到Visual (简称)开发环境中,用于开发基于.NET平台的应用程序。

.NET框架有两个主要的组件:公共语言运行时(CLR,Common Language Runtime)和.NET框架类库(FCL,Framework Class Library)。

公共语言运行时CLR是一个公共语言运行库,通常直译为公共语言运行时。

CLR支持多种语言,提供了各种语言的互操作性。

CLR提供了公共类型系统(CTS,Common Type System),对数据类型提供了定义、管理和使用的严格说明;提供了代码必须遵守公共语言规范(CLS,Common Language Standard)。

CLR运行的代码称为托管代码,在CLR控制之外的代码称为非托管代码。

C++,ISO/ANSI标准,非托管的C++设计C++/CLI标准,为CLR托管程序而设计。

CLI(Common Language Infrastructure)提供了两种代码的互操作,允许程序员在项目中的不同程序模块之间,甚至同一个文件中混合使用托管(C++/CLI)代码和非托管(C++)代码。

不同语言编写的组件也可以进行交互。

这体现了的强大。

.NET框架类库.NET框架类库FCL是一个与公共运行时紧密集成、可重用的类的集合。

包括类、接口、结构和枚举.NET框架类库使用CTS数据和CLS规范.NET框架类库包含了将近100个命名空间1.2Windows窗体设计器.NET框架的Windows窗体类由两个命名空间提供:System::Windows::Forms和System::Windows::Forms::Design。

System::Windows::Forms是一个很大的名空间,包含了300多个类和枚举类型,它们是组成Windows程序界面的各种控件,以及描述这些控件的属性、方法。

System::Windows::Forms::Design包含了使用设计器(Designer)的定制和扩展。

新建一个Windows应用程序的操作如下。

(1)启动后,屏幕出现如图1.1所示的集成开发环境。

(2)在主窗口菜单栏中单击“文件”→“新建”→“项目”菜单命令(或者按下Ctrl+Shift+N 组合键),打开“新建项目”对话框,如图1.2所示。

图1.1VS2008集成开发环境主窗口(3)在“项目类型”框中单击“Visual C++”下的“CLR”项,然后在“模板”框中单击“Windows窗体应用程序”项。

(4)在“名称”文本框中输入项目名称。

如图1.2所示。

图1.2“新建项目”对话框(5)单击“确定”按钮。

显示一个如图1.3所示的设计窗口。

图1.3设计窗口1.窗体设计窗口窗体设计窗口简称窗体(Form ),是用户自定义的窗口,用来设计应用程序的界面,对应的是程序运行的最终结果。

设计窗口的标题是“Form1.h[设计]”,当标题后面带有“*”后缀时,表示正在设计(编辑)状态。

用户设计的事件处理程序都将写入Form1.h 头文件中。

Form1是用户窗体的默认名,属性窗口不提供编辑功能。

我们可以在头文件Form1.h 中查到Component 类的预置函数,其中有对Name 属性赋值的语句。

窗体设计窗口属性窗口解决方案资源管理窗口void InitializeComponent(void){//……this->Name=L"Form1";//……}在窗体上设置的控件Name属性是可以通过编辑窗口修改的。

控件“布局”工具方便地调整它们之间的位置。

布局工具栏如图1.4所示。

图1.4布局工具栏2.工具箱工具箱,如图1.5所示。

图1.6是公共控件的展开列表。

图1.5工具箱图1.6公共控件图1.7控件的关联菜单3.属性窗口控件的属性,如图1.8所示。

图1.9所示是控件的事件列表。

图1.8属性窗口的属性列表图1.9属性窗口的事件列表4.代码窗口用户编写的事件函数都添加在项目的Form1.h文件中。

图1.10所示是建立按钮控件单击事件函数打开的代码窗口。

图1.10编辑事件函数的代码窗口使用集成开发环境的“文件”菜单,或者使用解决方案的树状列表,可以打开、新建各种类型文件,进入代码窗口或不同形式的编辑窗口。

例如图1.11的操作状态,可以为用户新建一个自定义的.cpp文件,系统将打开cpp文件的编辑窗口。

图1.11建立用户自定义的.cpp文件1.3建立应用程序1.3.1主要工作步骤创建一个新的可视化应用程序的主要步骤如下。

1.创建应用程序新建一个Visual C++CLR Windows窗体应用程序。

2.设计应用程序界面3.编写程序代码4.保存、编译、调试、运行程序1.3.2一个简单例子【例1-1】计算圆的周长和面积。

问题输入圆的半径,计算输出圆的周长和面积。

分析程序界面应该让用户输入一个数值;在接受到用户的输入信息后,按用户要求计算并显示圆的面积和周长。

设计步骤(1)建立项目启动,建立一个CLR类型Windows窗体应用程序,命名为wex1_1。

操作方法见1.2节。

系统自动提供了一个名为Form1的窗体。

(2)设计界面●添加控件对象。

分别点击工具箱中的标签(Label )、按钮(Button )和文本框(TextBox )三种控件,在窗体上添加3个标签:label1、label2、和label1;3个文本框:textBox1,textBox2和textBox3;2个按钮:button1和button2,用鼠标和布局工具调整它们的位置和大小。

请注意,调整控件时,它们的相关属性,例如Location ,Size 的值随之改变,可以在属性列表上查看到。

换言之,从属性列表中输入不同的数值,控件布局和外观也会马上表现出来。

●设置控件属性值。

为了使用户明确程序的功能,便于操作,适当修改控件的外观属性。

打开属性窗口,设置各控件的Text 属性值。

图1.12是修改窗体Text 属性值的情形。

Form1计算圆的周长和面积label1输入半径label2圆周长label3圆面积button1计算button2退出外观设计完成的界面如图1.13所示。

(3)设计事件处理函数本程序编写两个事件函数,button1(计算)控件的Click (单击)事件函数用于接受用户输入,计算并显示结果。

Button2(退出)控件的Click (单击)事件函数用于关闭窗体,结束程序。

private :System::Void button1_Click(System::Object^sender,System::EventArgs^e){double r,girth,area ;const double PI=3.1415;r =Double::Parse(textBox1->Text);//把文本转换成浮点型数据girth =2*PI*r;图1.12修改窗体的Text 属性值图1.13例1-1的界面设计area =PI*r*r;textBox2->Text=girth.ToString();//把浮点型数据转换成字符串textBox3->Text=area.ToString();}private :System::Void button2_Click(System::Object^sender,System::EventArgs^e){Close();//关闭窗体}事件函数有两个参数用于事件处理器与处理事件对象的关联。

第一个参数sender 接受处理器的this 指针第2个参数e 参数根据不同的事件将会有不同的类型,可以使函数接受、处理不同的事件数据。

EventArgs 是System 名空间定义包含事件数据的类的基类,此类不包含事件数据,当事件引发时不向事件处理程序传递状态信息的事件函数e 参数使用此类。

如果其他事件处理程序需要状态信息,则e 参数类型必须从此类派生的类。

button1_Click 函数接受用户从textBox1输入的半径值,计算圆的周长和面积,然后在textBox2和textBox3显示出来。

textBox 、label 等控件都是用文本形式接受或输出数据的,所以,如果要获取控件数值型数据,就要把控件的Text 属性(字符串)转换成相应的数据类型;如果要输出数值型数据,就要把数据转换成字符串才能向控件的Text 属性赋值。

程序中,函数Double::Parse(textBox1->Text)把浮点数形式的字符串转换成浮点值,返回其二进制码形式;Double::Parse(textBox1->Text)返回浮点数的字符串表示形式。

其中,Double ,String 都是CLR 的CTS 公共类型系统定义的数据类型。

button2_Click 函数调用了窗体的Close 方法,关闭窗体,结束应用程序。

(4)编译、运行程序程序运行效果如图1.14所示。

根据CLI 规范,句柄是一个对象的引用。

例如String ^str ="Hello Word";//str 是一个字符串句柄在C++/CLI 中,句柄和指针有以下区别:●指针用“*”表示;句柄用“^”表示。

●指针是指向一个内存的地址;句柄是对位于托管堆中的对象的引用。

●指针是稳定的,内存自动回收机制对它不起作用;而内存自动回收机制对句柄进行自动回收。

●程序员必须在程序中明确地删除指针,否则会引起内存泄漏;而对句柄的删除则是可图1.14例1-1的运行效果选的。

●指针没有安全机制;而句柄是安全的。

不能将句柄定义为void^。

●用关键字“new”返回一个指针;用关键字“gcnew”返回一个句柄。

1.3.3添加文件1.添加函数在的项目中,每一个窗体是一个类。

程序员可以在Form1.h文件中添加数据、函数,包括Form1类数据成员和成员函数。

【例1-2】设计函数,计算周长和面积。

打开项目窗体的代码编辑窗口,修改例1-1的代码,把计算圆周长和面积的程序编写成一个独立的函数circle,然后由button1_Click调用,实现计算功能。

相关主题