Windows窗体应用程序设计 .pptx
《Windows窗体应用程序设计 .pptx》由会员分享,可在线阅读,更多相关《Windows窗体应用程序设计 .pptx(182页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、18.1Windows编程的基础知识 Windows窗体是制作标准Win32屏幕的一种更高级的方法,具有非常健全的功能。.NET Framework中的所有语言都使用Windows窗体来代替它们在图形窗体中所使用的组件。在.NET下,Windows窗体为所有的语言提供了一套丰富的、统一的控件和绘图功能,以及用于图形和绘图底层Windows服务的标准API。有了Windows窗体,任何图形和屏幕函数就不再需要使用内置的Windows图形接口了。第1页/共182页 Windows应用程序是运行在Windows操作系统中的单机程序或C/S结构的客户端程序。包括两方面:1、Windows编程接口和类库
2、 2、Windows应用程序的基本结构 第2页/共182页1 1 WindowsWindows编程接口和类库 操作系统为了方便应用程序设计,一般都要提供一个函数库,设计应用程序的一些共用代码都包含在这个库中。程序员可以调用库中函数,以简化编程。API MFC类库 组件和组件库 .Net FrameWork基础类库 第3页/共182页2 Windows2 Windows应用程序的基本结构 Windows应用程序和控制台应用程序的基本结构类似,程序的执行总是从Main()方法开始,主函数Main()必须在一个类中。但Windows应用程序使用图形界面,一般有一个窗口(Form),采用事件驱动方式工
3、作。第4页/共182页最简单的最简单的WindowsWindows应用程序如下:应用程序如下:using System;/using System;/引入命名空间引入命名空间public class Form1:Form /public class Form1:Form /类定义类定义 static void Main()/static void Main()/主函数主函数 Application.Run(new Form1();Application.Run(new Form1();(1 1)最简单的最简单的Windows应用程序应用程序第5页/共182页using System;using
4、 System.Drawing;public class Form1:Form/构造函数 publicForm1()this.Text=我的第一个程序;button1=new Button();/生成Button类对象(2 2)窗体中增加按钮(Button)(Button)控件的方法:Button button1;/生成Button类引用变量第6页/共182页 /修改按钮位置 button1.Location=new Point(25,25);/修改button1按钮的标题 button1.Text=“确定”;/button1_Click函数是按钮单击事件的单击事件处理函数 button1.C
5、lick+=new System.EventHandler(button1_Click);/按钮增加到窗体中并显示 (2 2)窗体中增加按钮(Button)(Button)控件的方法:第7页/共182页 static void Main()Application.Run(new Form1();/下边函数是单击按钮事件处理函数 private void button1_Click(object sender,EventArgs e)/单击按钮后执行的语句 “单击了我”;第8页/共182页在窗体中增加控件类的对象的步骤:v定义Button类变量button1v在构造函数中用new生成Button
6、类对象v在构造函数中修改button1的属性 v增加button1的事件处理函数 这些步骤对于增加任何控件都是相同的 结论:结论:第9页/共182页3 3 用VS2005VS2005创建WindowsWindows应用程序 【例】使用微软VS2005创建Windows应用程序的具体步骤如下:(1)运行VS2005程序,单击菜单“文件(F)|新建项目(P)”菜单项,打开“新建项目”对话框如下,单击“确定”按钮,创建项目。第10页/共182页 单击菜单单击菜单“文件文件(F F)|)|全部保存全部保存(L L)”菜单项,菜单项,打开打开“保存保存项目项目”对对话框话框如下,按图中那样填写,第一项是
7、项目名。如下,按图中那样填写,第一项是项目名。第11页/共182页(2)单击“确定”按钮,保存解决方案的所有文件。打开如下对话框。解决方案包括一个项目,解决方案的所有文件都保存到WindowsApplication7文件夹下。在WindowsApplication7文件夹中下有1个文件夹WindowsApplication7和文件 WindowsApplication7.sln。打开WindowsApplication7文件夹,可以看到有3个文件夹和5个文件。第12页/共182页第13页/共182页(3)下边在窗体中增加一个按钮,并为按钮增加单击事件函数。打开工具箱窗口,如下图。双击Butto
8、n控件,Button控件将放到Form1窗体中。打开属性窗口,修改属性,打开事件窗口,增加事件。第14页/共182页工具箱窗口工具箱窗口属性窗口属性窗口事件窗口事件窗口第15页/共182页4方案(Solution)(Solution)和项目(Project)(Project)一个应用(Application)可能包括一个或多个可执行程序,所有这些可执行程序的集合叫做一个应用解决方案。为了生成一个可执行程序,可能需要有一个或多个文件,所有这些文件的集合叫一个项目,因此项目是为了创建一个可执行程序所必需的所有的文件的集合。而一个方案中可能包括多个项目。解决方案资源管理器窗口可以为我们显示一个解决方
9、案的树形结构,树形结构中包含项目及项目中的文件。第16页/共182页各个文件夹和文件的用途如下:v bin文件夹 -保存编译后的程序v obj文件夹 保存临时文件v Properties文件夹 v Form1.cs 窗体文件-窗体代码文件v 窗体设计文件v Program.CS 程序入口5 Win Forms程序文件夹及文件后缀名 第17页/共182页PropertiesProperties文件夹 定义你程序集的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs 类文件,用于保存程序集的信息,如名称,版本等,这些信息一般与项目属性面板中的数据对应,不需要手动编写 BinBin文
10、件夹 目录用来保存项目生成后程序集,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性配置属性输出路径来修改。文件夹 第18页/共182页ObjObj文件夹 目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性配置属性高级增量编译来设置。第19页/共182页.sln 解决
11、方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息。.csproj 项目文件,创建应用程序所需的引用、数据连接、文件夹和文件的信息。.cs 类模块代码文件。业务逻辑处理层的代码。文件第20页/共182页designer.cs是窗体设计器生成的代码文件,作用是对窗 体 上 的 控 件 做 初 始 化 工 作(在 函 数 InitializeComponent()中)VS2003以前都把这部分代码放到窗体的cs文件中,由于这部分代码一般不用手工修改,在VS2005以 后 把 它 单 独 分 离 出 来 形 成 一 个designer.cs文件与窗体对应。这样cs文件中剩下的代码都是
12、与程序功能相关性较高的代码利于维护。第21页/共182页文件:文件:namespaceProj8_1partialclassForm1/必需的设计器变量。必需的设计器变量。/清理所有正在使用的资源。清理所有正在使用的资源。/如果应释放托管资源,为如果应释放托管资源,为true;/否则为否则为false。protectedoverridevoidDispose(booldisposing)/重写基类重写基类Dispose()方法方法if(disposing&(components!=null)components.Dispose();base.Dispose(disposing);/调用基类的调
13、用基类的Dispose()方法方法第22页/共182页#regionWindows窗体设计器生成的代码窗体设计器生成的代码/设计器支持所需的方法设计器支持所需的方法-不要不要/使用代码编辑器修改此方法的内容。使用代码编辑器修改此方法的内容。/privatevoidInitializeComponent()/初始化方法初始化方法this.SuspendLayout();/button1宋体宋体,9F,调用模式窗体调用模式窗体;第23页/共182页/button2宋体宋体,9F,调用无模式窗体调用无模式窗体;/Form1this.Name=Form1;this.Text=Form1;this.Re
14、sumeLayout(false);第24页/共182页/STAThreadSTAThread是一种线程模型,用在程序的入口方法上(在C#C#和VB.NETVB.NET里是MainMain()()方法),指示应用程序的默认线程模型是单线程单元 (STA)(STA)。是STASTA。STAThreadSTAThread static void Main()static void Main()/程序运行在XPXP环境中能自动应用XPXP的主题样式 Application.EnableVisualStyles();Application.EnableVisualStyles();/使用GDIGDI还
15、是,falsefalse是 GDI+GDI+,truetrue是 GDIGDI Application.SetCompatibleTextRenderingDefault(Application.SetCompatibleTextRenderingDefault(false);false);/运行启动窗体 Application.Run(Application.Run(new new Form1();Form1();Program.CS第25页/共182页1、为什么要使用窗体简单强大方便灵活8.2Windows窗体概述第26页/共182页2什么是窗体Windows操作系统中,处处是窗体第27页
16、/共182页3、怎样创建Windows程序在VS中创建Windows应用程序的步骤:1、打开VS2、新建项目3、项目类型:VisualC#项目4、模板:Windows应用程序第28页/共182页4、认识WinForms项目名称项目名称主程序文件,主程序文件,包含包含Main方法方法我们编写代码的文件我们编写代码的文件解决方案名称解决方案名称窗体设计器代码文件,窗体设计器代码文件,代码为代码为VS自动生成自动生成第29页/共182页5、Main方法位于Program.cs文件Windows程序的入口/Program.csnamespaceMyFormstaticclassProgram.stat
17、icvoidMain()Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1();Main方法方法,程序的入口程序的入口VS自动生成自动生成一般不需要理会一般不需要理会第30页/共182页6、进一步认识窗体文件WinForms窗体有两种编辑窗口:窗体设计器窗口窗体设计器窗口窗体代码编辑窗口窗体代码编辑窗口第31页/共182页7、为什么使用partial具有双钥匙的密码箱具有双钥匙的密码箱第一把钥匙第一把钥匙第二把钥匙第二把钥匙为
18、了安全,两把钥匙分开放置为了安全,两把钥匙分开放置只有两把钥匙同时使用才能打开密码箱只有两把钥匙同时使用才能打开密码箱用用partial将将同一个窗体同一个窗体的代码分开放在的代码分开放在两个文件两个文件中:中:一个存放一个存放VS自动生成的代码自动生成的代码一个存放我们自己编写的代码一个存放我们自己编写的代码第32页/共182页程序员编写的代码程序员编写的代码VS自动生成的代码自动生成的代码/namespaceMyFormpartialclassForm1/privatevoidInitializeComponent()/VS自动生成的代码自动生成的代码this.ShowInTaskbar=
19、false;this.Name=Form1;this.Text=Form1;this.TopMost=true;运行时运行时合到一起合到一起组成一个窗体文件组成一个窗体文件8、怎样使用partial/Form1.csnamespaceMyFormpublicpartialclassForm1:FormpublicForm1()InitializeComponent();/我们编写的代码我们编写的代码第33页/共182页构造函数构造函数做一些初始化的工作做一些初始化的工作编译器自动调用编译器自动调用9、认识窗体类/Form1.csnamespaceMyFormpublicpartialclass
20、Form1:FormpublicForm1()InitializeComponent();冒号表示继承冒号表示继承Form类定义了窗体的基本属类定义了窗体的基本属性和行为性和行为我们创建的窗体都继承自我们创建的窗体都继承自Form类类Form1具有相应的属性和行为具有相应的属性和行为Form类:.NET预定义的窗体类Form1继承自Form第34页/共182页10、窗体的重要属性Name:窗体对象的名字,类似于变量的名字窗体对象的名字,类似于变量的名字BackColor:窗体的背景色窗体的背景色ShowInTaskBar:设置窗体是否出现在任务栏设置窗体是否出现在任务栏StartPositio
21、n:窗体第一次出现时的位置:窗体第一次出现时的位置Text:窗体标题栏显示的文字窗体标题栏显示的文字TopMost:设置窗体是否为最顶端的窗体设置窗体是否为最顶端的窗体WindowState:窗体出现时最初的状态(正常、最大化、最小化)窗体出现时最初的状态(正常、最大化、最小化)第35页/共182页11、为什么使用事件Windows系统中处处是事件:鼠标按下、鼠标释放、键盘键按下Windows系统通过事件处理来响应用户的请求显示开始菜单显示开始菜单我的电脑我的电脑窗口打开窗口打开事件触发事件触发事件响应的结果事件响应的结果单击单击双击双击第36页/共182页12、事件驱动Windows通过随时
22、响应用户触发的事件做出相应的响应事件驱动机制我们需要做的:针对我们感兴趣的事件,编写相应的事件处理程序 WinForms 应用程序也是事件驱动的第37页/共182页13、编写事件处理程序编写事件处理程序的步骤:1、选中控件 2、在“属性”窗口中单击3、找到事件4、生成事件处理方法5、编写处理代码第38页/共182页事件处理程序分析/窗体的鼠标移动事件处理程序窗体的鼠标移动事件处理程序privatevoidForm1_MouseMove(objectsender,MouseEventArgse)this.Text=String.Format(捕捉到鼠标了捕捉到鼠标了!(0,1),e.X,e.Y)
23、;示例中添加的事件处理程序:this关键字关键字代表窗体本身代表窗体本身鼠标的横纵坐标鼠标的横纵坐标窗体标题栏显窗体标题栏显示的文字示的文字鼠标事件参数鼠标事件参数事件源事件源第39页/共182页14、窗体的重要事件Load:窗体加载事件MouseClick:鼠标单击事件MouseDoubleClick:鼠标双击事件MouseMove:鼠标移动事件KeyDown:键盘按下事件KeyUp:键盘释放事件窗体有哪些事件?第40页/共182页窗体上各事件的引发顺序窗体上各事件的引发顺序当一个窗体启动时,执行事件过程的次序如下:当一个窗体启动时,执行事件过程的次序如下:(1)本窗体上的)本窗体上的Loa
24、d事件过程。事件过程。(2)本窗体上的)本窗体上的Activated事件过程。事件过程。(3)本窗体上的其他)本窗体上的其他Form级事件过程。级事件过程。(4)本窗体上包含对象的相应事件过程。)本窗体上包含对象的相应事件过程。一个窗体被卸载时,执行事件过程的次序如下:一个窗体被卸载时,执行事件过程的次序如下:(1)本窗体上的)本窗体上的Closing事件过程。事件过程。(2)本窗体上的)本窗体上的FormClosing事件过程。事件过程。(3)本窗体上的)本窗体上的Closed事件过程。事件过程。(4)本窗体上的)本窗体上的FormClosed事件过程。事件过程。第41页/共182页当鼠标在
25、窗体上点击时,窗体的背景色改变:如果是红色,变成黄色如果是黄色,变成绿色否则变成红色提示:提示:处理窗体的处理窗体的MouseClick事件事件利用利用Color类得到某种颜色:类得到某种颜色:红色红色Color.Red绿色绿色Color.Green黄色黄色Color.Yellow窗体的背景色:窗体的背景色:this.BackColor判断背景色:判断背景色:if(this.BackColor=Color.Red)例例第42页/共182页/鼠标单击事件鼠标单击事件privatevoidForm1_MouseClick(objectsender,MouseEventArgse)if(this.B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows窗体应用程序设计 Windows 窗体 应用 程序设计
限制150内