您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > windows编程技术18C_窗体编程
第18章C#窗体编程Windows窗体(Form,形状/表单)原来是VisualBasic程序的用户界面,后来成为.NET程序的GUI,被VisualStudio中的C#、VisualBasic、F#、MC++和C++/CLI等开发语言工具所使用,后来又从VisualC++2005起被引入到MFC编程中。作为应用程序的基本单元,窗体实质上只是一个(类似于对话框的)简单框架窗口,内含一块空白板(客户区)。开发人员可通过添加控件(包括菜单条、工具条、状态条、计时器和公用对话框等)来创建用户界面,并通过编写代码来操作数据,从而填充这个空白板。为此,VisualStudio提供了一个有助于编写代码的集成开发环境,以及一个针对.NET框架编程的丰富的控件集。通过使用代码来补充这些控件的功能,可以方便快捷地开发所需要的解决方案。由于时间有限,本章只介绍C#窗体编程一些基本内容。相关帮助文档的位置:*窗体编程:“库主页\VisualStudio2010\VisualStudio\创建基于Windows的应用程序\Windows窗体”。*.NET类库:“库主页\VisualStudio2010\.NETFramework类库”中的System、System.Windows.Forms和System.Drawing等命名空间。图18-1是在窗体编程需要用到的一些.NET类型的继承关系图,涉及的命名空间主要有System.Windows.Forms、System.Drawing和System.Drawing.Drawing2D。18.1创建窗体下面我们以一个简单的窗体交互绘图程序FormDraw为例(参见图18-2),介绍用C#编写简单窗体程序的全过程。18.1.1创建窗体项目打开“新建项目”对话框(参见图18-3),选左边“已安装的模板”栏的“其他语言\VisualC#”项,再选中间栏的“Windows窗体应用程序”模板。选择父目录位置后,输入项目名称“FormDraw”,去选“为解决方案创建目录”复选框,按“确定”钮关闭对话框。图18-1窗体编程中常用.NET类型的层次结构字体和颜色标明类型所在的命名空间,正常:System、粗体:System.Windows.Forms、斜体:System.Drawing、粗斜体:System.Drawing.Drawing2D、灰色:System.ComponentModel图18-2交互式窗体绘图程序图18-3新建项目对话框1.项目目录和文件VisualStudio会自动创建名为FormDraw的项目目录,在项目目录中,自动创建的文件有:项目文件——FormDraw.sln(解决方案)和FormDraw.csproj(C#项目),代码文件——Program.cs(程序入口)、Form1.cs(窗体编程)和Form1.Designer.cs(窗体设计)。项目目录还自动包含存放项目的目标代码的obj目录和可执行程序的bin目录,这两个目录中都可包含Debug和/或Realse目录,分别存放具体的调试版和/或发行版的二进制程序代码。项目目录还自动包含了一个存放项目属性的Proporties目录,包含如下文件:Settings.settings(项目设置,XML文件)、Resources.resx(资源)、AssemblyInfo.cs(程序集代码)和Resources.Designer.cs(资源设计代码)。2.用户界面与工具箱IDE会自动打开一个默认的名为“Form1”的空白窗体(Form1.cs[设计]),并打开对应的“工具箱”窗口,供程序员进行窗体设计,参见图18-4。图18-4C#窗体编程界面窗体设计所用的工具箱内容丰富,除了VB动力包(VisualBasicPowerPacks)栏(5种)、“报表”栏(1种)和“WPF互操作性”栏(1种)的工具外,其余所有可用的工具位于“所有Windows窗体”栏中(只是缺少了“数据”栏中VS2010新增加的“图表”工具),共有66种。其下各栏将这些工具分门别类地列出,包括:“公共控件”(21种)、“容器”(6种)、“菜单和工具栏”(5种)、“数据”(5种)、“组件”(14种)、“打印”(5种)和“对话框”(5种),共计62种,参见图18-5。只有DomainUpDown(域上下)、PropertyGrid(属性网格)、Splitter(拆分条)、HScrollBar(水平滚动条)、VScrollBar(垂直滚动条)和TrackBar(跟踪条)这5种工具没有包含在这些分类栏中。另外,在窗体编程中,工具栏的“对话框编辑器”栏和“常规”栏为空。3.代码文件内容自动生成的程序代码,定义了一个与项目同名的命名空间,还定义了用户的应用程序类Program(基类为默认的System.Object)和派生的窗体类Form1(基类为System.Windows.Forms.Form,参见图18-6),后者被定义在两个同名的部分类(分别位于Form1.cs和Form1.Designer.cs者两个代码文件)中。1)Program.cs自动生成的Program.cs代码为:a)公共控件、容器b)菜单和工具栏、数据、组件c)打印、对话框、WPF互操作性、报表、VB动力包图18-5窗体工具箱usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Windows.Forms;namespaceFormDraw{staticclassProgram{///summary///应用程序的主入口点。////summary[STAThread]staticvoidMain(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1());}}}该文件中的代码主要是定义了Program类,它包含Main入口主程序。Main方法中最重要的语句为:Application.Run(newForm1());它创建窗体Form1对象,并以其为程序界面(主框架窗口)来运行窗体应用程序。2)Form1.cs代码文件Form1.cs包含了窗体部分类Form1的一部分定义,用于程序员编写事件处理代码,也是我们今后工作的主要对象。可以在“解决方案资源管理器”页中,选中“Form1.cs”项后,按鼠标右键,在弹出的浮动菜单中选“查看代码(C)”菜单项,来以源代码方式打开该文件。下面是该文件的初始代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceFormDraw{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}}}3)Form1.Designer.cs代码文件Form1.Designer.cs包含了窗体部分类Form1的另一部分定义,用于存放系统自动生成的窗体设计代码。下面是该文件的初始代码:namespaceFormDraw{partialclassForm1{///summary///必需的设计器变量。////summaryprivateSystem.ComponentModel.IContainercomponents=null;///summary///清理所有正在使用的资源。////summary///paramname=disposing如果应释放托管资源,为true;否则为false。/paramprotectedoverridevoidDispose(booldisposing){if(disposing&&(components!=null)){components.Dispose();}base.Dispose(disposing);}#regionWindows窗体设计器生成的代码///summary///设计器支持所需的方法-不要///使用代码编辑器修改此方法的内容。////summaryprivatevoidInitializeComponent(){this.components=newSystem.ComponentModel.Container();this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;this.Text=Form1;}#endregion}}4.Application类密封类Application也位于System.Windows.Forms.Form命名空间中,直接派生于System.Object。下面是它的定义:publicsealedclassApplicationApplication类具有用于启动和停止应用程序和线程、启用可视界面、以及处理Windows消息的方法,如下所示:*Run——在当前线程上启动应用程序消息循环,并可以选择使某窗体可见。常用的重载版为:publicstaticvoidRun(FormmainForm)。*Exit或ExitThread——停止消息循环。常用的重载版为:publicstaticvoidExit()。*EnableVisualStyles——此方法为应用程序启用可视样式。如果控件和操作系统支持视觉样式,则控件将以视觉样式进行绘制。若要使EnableVisualStyles生效,必须在应用程序中创建任何控件之前调用它;EnableVisualStyles通常是Main函数的第一行。当调用EnableVisualStyles时,无需单独的清单即可启用可视化样式。语法为:publicstaticvoidEnableVisualStyles()。*SetCompatibleTextRenderingDefault——该方法用于设置兼容文本的默认表示方式。语法为:publicstaticvoidSetCompatibleTextRenderingDefault(booldefaultValue)*DoEvents——在您的程序处于某个循环中时处理消息。*AddMessageFilter——向应用程序消息泵添加消息筛选器来监视Windows消息。*IMessageFilter——使您可以阻止引发某事件或在调用某事件处理程序前执行特殊操作。该类还具有用于获取或设置当前线程的区域性信息的CurrentCultur和CurrentInputLanguage属性。不能从此类派生新类(密封类)。18.1.2修改窗体属性窗体的属性有很多(参见图18-7),其中常用的有:*布局:大小Size——默认为300*300像素,可以通过修改此属性,或直接拖动窗体的边框来改变窗体的尺寸。运行时用户也可以自己改变窗体大小。*窗口样式:图标Icon——默认为,可以通过为点击该属性条目右端浏览钮,装入新的图标文件(16*16和32*32像素,*.ico)。也可以自己通过为项目添加新建图标项,来创建新图标资源,如FormDraw.ico(默认位于项目所在目录)。可以通过“项目\添加新项”菜单项(或按对应的快捷键Ctrl+Shift+A)来完成,参见图18-8和9。然后,在窗体设计界面所对应的属性窗口中,将“窗口样式”栏的图标项“Icon”右边的图案,通过其右端的浏览钮来更换。图18-7窗体属性*设计:名称(Name)——相当于MFC中的ID,对应于窗体的类名。默认为Form1(似VB),可以改成自己喜欢的名称,如Dr
本文标题:windows编程技术18C_窗体编程
链接地址:https://www.777doc.com/doc-4311007 .html