Windows窗体应用程序设计8.1窗体设计8.2常用的控件设计8.3多文档窗体8.4窗体设计的事件机制窗体设计窗体(Form)是一个窗口或对话框,是存放各种控件(包括标签、文本框、命令按钮等)的容器,可用来向用户显示信息。8.1.1创建Windows窗体应用程序的过程添加一个窗体的操作步骤是:选择“项目”|“添加Windows窗体”菜单命令,在出现的“添加新项”对话框中,选中“Windows窗体”,输入相应的名称(这里为Form2.cs),单击“添加”按钮。一个Windows应用程序可以包含多个窗体。窗体类型在C#中,窗体分为如下两种类型:(1)普通窗体,也称为单文档窗体(SDI),前面所有创建的窗体均为普通窗体。普通窗体又分为如下两种:●模式窗体。这类窗体在屏幕上显示后用户必须响应,只有在它关闭后才能操作其他窗体或程序。●无模式窗体。这类窗体在屏幕上显示后用户可以不必响应,可以随意切换到其他窗体或程序进行操作。通常情况下,当建立新的窗体时,都默认设置为无模式窗体。(2)MDI父窗体,即多文档窗体,其中可以放置普通子窗体。窗体的常用属性1.布局属性2.窗口样式属性3.外观样式属性4.行为属性8.1.4窗体的常用事件8.1.5窗体的常用方法1.Form1窗体:(1)设计界面(2)事件过程:Form1.cs文件://引用部分usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespaceProj8_1{publicpartialclassForm1:Form//从Form类继承Form1窗体{publicForm1()//Form1类构造函数{InitializeComponent();//调用初始化方法,其代码在Form1.Designer.cs文件中}privatevoidbutton1_Click(objectsender,EventArgse){Formmyform=newForm1_1();//定义Form1_1类对象myform.ShowDialog();//以模式窗体方式调用}privatevoidbutton2_Click(objectsender,EventArgse){Formmyform=newForm1_2();//定义Form1_2类对象myform.Show();//以无模式窗体方式调用}}}Form1.Designer.cs文件:namespaceProj8_1{partialclassForm1{///summary///必需的设计器变量。////summaryprivateSystem.ComponentModel.IContainercomponents=null;///summary///清理所有正在使用的资源。////summary///paramname=disposing如果应释放托管资源,为true;///否则为false。/paramprotectedoverridevoidDispose(booldisposing)//重写基类Dispose()方法{if(disposing&&(components!=null)){components.Dispose();}base.Dispose(disposing);//调用基类的Dispose()方法}#regionWindows窗体设计器生成的代码///summary///设计器支持所需的方法-不要///使用代码编辑器修改此方法的内容。////summaryprivatevoidInitializeComponent()//初始化方法{this.button1=newSystem.Windows.Forms.button();this.button2=newSystem.Windows.Forms.button();this.SuspendLayout();//button1this.button1.Font=newSystem.Drawing.Font(宋体,9F,System.Drawing.FontStyle.Bold,System.Drawing.GraphicsUnit.Point,((byte)(134)));this.button1.Location=newSystem.Drawing.Point(28,21);this.button1.Name=button1;this.button1.Size=newSystem.Drawing.Size(117,33);this.button1.TabIndex=0;this.button1.Text=调用模式窗体;this.button1.UseVisualStyleBackColor=true;this.button1.Click+=newSystem.EventHandler(this.button1_Click);//button2this.button2.Font=newSystem.Drawing.Font(宋体,9F,System.Drawing.FontStyle.Bold,System.Drawing.GraphicsUnit.Point,((byte)(134)));this.button2.Location=newSystem.Drawing.Point(28,69);this.button2.Name=button2;this.button2.Size=newSystem.Drawing.Size(117,33);this.button2.TabIndex=1;this.button2.Text=调用无模式窗体;this.button2.UseVisualStyleBackColor=true;this.button2.Click+=newSystem.EventHandler(this.button2_Click);//Form1this.AutoScaleDimensions=newSystem.Drawing.SizeF(6F,12F);this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;this.ClientSize=newSystem.Drawing.Size(169,128);this.Controls.Add(this.button2);this.Controls.Add(this.button1);this.Name=Form1;this.StartPosition=System.Windows.Forms.FormStartPosition.CenterScreen;this.Text=Form1;this.ResumeLayout(false);}#endregionprivateSystem.Windows.Forms.buttonbutton1;//私有字段privateSystem.Windows.Forms.buttonbutton2;//私有字段}}2.Form1_1窗体:(1)设计界面(2)事件过程:无3.Form1_1窗体:(1)设计界面(2)事件过程:无Program.cs文件:usingSystem;usingSystem.Collections.Generic;usingSystem.Windows.Forms;namespaceProj8_1{staticclassProgram{///summary///应用程序的主入口点。////summary[STAThread]staticvoidMain(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1());//启动窗体为Form1}}}按F5键或单击工具栏中的按钮运行本项目。上机调试运行结果。窗体上各事件的引发顺序当一个窗体启动时,执行事件过程的次序如下:(1)本窗体上的Load事件过程。(2)本窗体上的Activated事件过程。(3)本窗体上的其他Form级事件过程。(4)本窗体上包含对象的相应事件过程。一个窗体被卸载时,执行事件过程的次序如下:(1)本窗体上的Closing事件过程。(2)本窗体上的FormClosing事件过程。(3)本窗体上的Closed事件过程。(4)本窗体上的FormClosed事件过程。焦点与Tab键次序焦点(Focus)是指当前处于活动状态的窗体或控件。要将焦点移到当前窗体中的textBox1文本框,可以使用以下命令:textBox1.Focus();控件概述控件是包含在窗体上的对象,是构成用户界面的基本元素,也是C#可视化编程的重要工具。工具箱中包含了建立应用程序的各种控件,根据控件的不同用途分为若干个选项卡,可根据用途单击相应的选项卡,将其展开,选择需要的控件。常用的控件设计大多数控件共有的基本属性如下:1)Name属性2)Text属性3)尺寸大小(Size)和位置(Location)属性4)字体属性(Font)5)颜色属性(BackColor和ForeColor)6)Cursor属性7)可见(Visible)和有效(Enabled)属性富文本框控件提供类似MicrosoftWord能够输入、显示或处理具有格式的文本。【例8.2】设计一个窗体,说明富文本框的使用方法。Form2窗体:(1)设计界面(2)事件过程:privatevoidForm2_Load(objectsender,EventArgse){richtextBox1.LoadFile(H:\\C#2005\\ch8\\file.RTF,RichtextBoxStreamType.RichText);}@H:\C#2005\ch8\file.RTF,将本窗体设计为启动窗体,运行本项目,在富文本框RichtextBox1中显示H:\C#2005\ch8\file.rtf文件的内容。分组框控件面板控件复选框控件属于选择类控件,用来设置需要或不需要某一选项功能。在运行时,如果用户用鼠标单击复选框左边的方框,方框中就会出现一个“√”符号,表示已选取这个功能了。复选框的功能是独立的,如果在同一窗体上有多个复选框,用户可根据需要选取一个或几个。主要属性:Checked:获取或设置一个布尔值,该值指示是否已选中控件。如果为True,则指示选中状态;否则为False(默认值)。主要事件:Click【例8.3】设计一个窗体,说明复选框的应用。Form3窗体:(1)设计界面(2)事件过程:privatevoidbutton1_Click(objectsender,EventArgse){if(checkBox1.Checked&&checkBox3.Checked&&!checkBox2.Checked&&!checkBox4.Checked)MessageBox.Show(您答对了,真的很棒!!!,信息提示,MessageBoxButtons.OK);elseMessageBox.Show(您答错了,继续努力吧!!!,信息提示,MessageBoxButtons.OK);}运行界面单选按钮控件单选按钮是多选一,只能从多个选项中选择一个,各选项间的关系是互斥的。单选按钮使用时经常用多个控件构成一个组,同一时刻只能选择同一组中的一个单选按钮,因此,经常将单选按钮放在一个分组框中构成一个选项组。设计一个窗体,说明单选按钮的使用方法。Form4窗体:(1)设计界面(2)事件过程:privatevoidbutton1_Click(objectsender