您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > CSharp窗体编程
1第11章C#窗体编程Windows窗体(Form,形状/表单)原来是VisualBasic程序的用户界面,后来成为.NET程序的GUI,被VisualStudio中的C#、VisualBasic、J#、MC++和C++/CLI等开发语言工具所使用,后来又被VisualC++2005引入到MFC编程中。作为应用程序的基本单元,窗体实质上只是一个(类似于对话框的)简单框架窗口,内含一块空白板。开发人员可通过添加控件(包括菜单条、工具条、状态条、计时器和公用对话框等)来创建用户界面,并通过编写代码来操作数据,从而填充这个空白板。为此,VisualStudio提供了一个有助于编写代码的集成开发环境,以及一个针对.NET框架编程的丰富的控件集。通过使用代码来补充这些控件的功能,可以方便快捷地开发所需要的解决方案。由于时间有限,本章只介绍C#的窗体编程。相关帮助的位置:(先选“未筛选”作为“筛选依据”的选项,然后再定位)窗体编程:“目录\开发工具和语言\VisualStudio文档\基于Windows的应用程序、组件和服务\创建基于Windows的应用程序\Windows窗体(WindowsForms)”用C#创建.NET窗体程序:“目录\开发工具和语言\VisualStudio文档\VisualC#\用VisualC#编写应用程序\创建Windows窗体应用程序”.NET类库:“目录\.NET开发\.NETFramework编程\类库参考\”中的System、System.Windows.Forms和System.Drawing等命名空间下面是在窗体编程需要用到的一些.NET类型的继承关系图:图11-1常用.NET类型的层次结构(颜色标明类型所在的命名空间)黑色:System、红色:System.Windows.Forms、绿色:System.Drawing、蓝色:System.Drawing.Drawing2D、褐色:System.ComponentModelFormContainerControlScrollableControlControlComponentMarshalByRefObjectObject用户窗体类ToolStripPanelMenuStripToolStripItemToolStripButtonToolStripDropDownItemToolStripMenuItemGraphicsImagePenBrushSolidBrushTextureBrushValueTypeColorPoint[F]FontRectangle[F]Size[F]HatchBrushBitmapColorDialogCommonDialogFontDialogPrintDialogFileDialogPageSetupDialogFolderBrowserDialogConsoleStringDelegateEventStructPathGradientBrushLinearGradientBrushButtonBaseCheckBoxButtonMathStatusStripRadioButtonComboBoxListControlGroupBoxLabelListBoxPictureBoxTextBoxBaseTimerTextBoxApplicationOpenFileDialogSaveFileDialogMessageBox211.1创建窗体下面我们以一个简单的窗体交互绘图程序FormDraw为例(参见图11-2),介绍用C#编写简单窗体程序的全过程。图11-2交互式窗体绘图程序1.创建窗体项目打开“新建项目”对话框(参见图11-3),选左边“项目类型”栏的“其他语言\VisualC#”项,再选右边“模板”栏的“Windows应用程序”模板。选择磁盘卷和父目录位置后,输入项目名称“FormDraw”,去选“创建解决方案的目录”复选框,按“确定”钮关闭对话框。图11-3新建项目对话框31)项目目录和文件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(资源设计代码)。IDE会自动打开一个缺省的名为“Form1”的空白窗体(Form1.cs[设计]),并打开对应的“工具箱”窗口,供程序员进行窗体设计。参见图11-4。图11-4C#窗体编程界面2)代码文件内容自动生成的程序代码,定义了一个与项目同名的命名空间,还定义了用户的应用程序类Program(基类为缺省的System.Object)和派生的窗体类Form1(基类为System.Windows.Forms.Form,参见图11-5),后者被定义在两个同名的部分类(分别位于Form1.cs和Form1.Designer.cs者两个代码文件)中。Program.cs自动生成的Program.cs代码为:4usingSystem;usingSystem.Collections.Generic;usingSystem.Windows.Forms;namespaceFormDraw{staticclassProgram{///summary///应用程序的主入口点。////summary[STAThread]staticvoidMain(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1());}}}该文件中的代码主要是定义了Program类,它包含Main入口主程序。Main方法中最重要的语句为:Application.Run(newForm1());它创建窗体Form1对象,并以其为程序界面(主框架窗口)来运行本窗体应用程序。Form1.cs代码文件Form1.cs包含了窗体部分类Form1的一部分定义,用于程序员编写事件处理代码,也是我们今后工作的主要对象。可以在“解决方案资源管理器”页中,选中“Form1.cs”项后,按鼠标右键,在弹出的浮动菜单中选“查看代码(C)”菜单项,来以远代码方式打开该文件。下面是该文件的初始代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespaceFormDraw{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();FormContainerControlScrollableControlControlComponentMarshalByRefObjectForm1Object图11-5Form1及其各级基类5}}}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}}63)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属性。不能创建此类的实例(密封类)。2.修改窗体属性窗体的属性有很多(参见图11-6),其中常用的有:布局:大小Size——缺省为300*300像素,可以通过修改此属性,或直接拖动窗体的边框来改变窗体的尺寸。运行时用户也可以自己改变窗体大小。7图11-6窗体属性窗口样式:图标Icon——缺省为,可以通过为点击该属性条目右端浏览钮,装入新的图标文件(32*32像素,*.ico)。也
本文标题:CSharp窗体编程
链接地址:https://www.777doc.com/doc-5863742 .html