Windows应用程序开发初步常用窗体控件课件.ppt
第 7 章 Windows应用程序开发初步常用窗体控件,窗体的属性和方法 常用的输入输出方法 标签控件和超链接控件 文本控件、单选按钮和复选按钮 图片控件和进度条控件 选项卡控件和Timer控件 Windows应用程序的结构和开发步骤,第 7 章 Windows应用程序开发初步常用窗体控件,窗体的属性和方法 常用的输入输出方法 标签控件和超链接控件 文本控件、单选按钮和复选按钮 图片控件和进度条控件 选项卡控件和Timer控件 Windows应用程序的结构和开发步骤,7.1 Windows窗体简介,Windows应用程序是运行在Windows系列操作系统的应用软件,具有和Windows操作系统相似的界面,在Visual Studio 2008中利用窗体控件可以快速开发Windows应用程序。,7.1.1 Windows窗体应用程序,使用Windows窗体,可以创建基于Windows的功能强大的应用程序。一个标准的Windows窗体应用程序由窗体、控件及其事件所组成。窗体是Windows应用程序的基本组成部分,它提供了定义窗体外观的属性、定义行为的方法和定义与用户交互的事件。下面我们将详细介绍窗体的属性、方法和事件。,7.1.2 窗体的属性,在程序设计阶段,可以对窗体或窗体内控件的属性进行属性值的更改。窗体和控件都有属于自己本身的属性,每个属性都有默认值,窗体和各控件间有些属性彼此都具有,有些属性可能是自己所独有。例如:Text、Name等属性很多控件和窗体都拥有这些属性。属性值的设置和修改,在程序设计阶段有两种方式:一种是直接在属性窗口内更改属性值,另一种方式是进入编码窗口编写程序时修改,在程序运行成功运行后其值发生改变。若看不到属性窗口,可运行菜单的【视图/属性窗口】便可打开属性窗口。下图是选中窗体Form1后看到的Form1的属性窗口。,属性窗口的属性可按字母顺序钮进行显示,或是按分类钮进行分类显示,分类钮是按照外观、访问范围、行为、布局、设计、焦点、数据来寻找属性名称以更改其默认值。本节选取以属性分类的方式来介绍窗体常用的属性。,外观类型的属性,外观类型的属性常用的有:BackColor(背景色)、BackGroundImage(背景图片)、Cursor(指针)、Font(字体)、ForeColor(前景色)和Text(标题文字)等属性。,窗口样式的属性,窗口样式的属性常用的有Icon(标题的图标文件)、MaximizeBox(最大化)、MinimizeBox(最小化)等属性。,布局类型的属性,布局类型的属性比较常用的有Location(窗体位置)、Size(窗体大小)、StartPosition(初始化位置)、WindowState(窗体状态)等属性。StartPosition(初始化位置)属性的设置,可决定程序窗口在屏幕出现时的位置,其属性值有五种状态:Manual(手动)CenterScreen(屏幕中央)WindowsDefaultLocation(默认值)WindowsDefaultBounds(屏幕中央并自动调整窗体边界大小)CenterParent(父窗口中央)WindowState(窗体状态)属性的设置,可决定程序窗口出现时的初始可见状态。,7.1.3 窗体的重要方法和事件,窗体常用的方法主要有。Show方法该方法的作用是让窗体显示出来,其调用格式为:窗体名.Show(),如下代码。Form2 frm=new Form2();/实例化窗体frm.Show()/显示窗体 Hide方法该方法的作用是把窗体隐藏出来,其调用格式为:窗体名.Hide()。Refresh方法该方法的作用是刷新并重画窗体,其调用格式为:窗体名.Refresh()。,Activate方法该方法的作用是激活窗体并给予它焦点。其调用格式为:窗体名.Activate();Close方法该方法的作用是关闭窗体。其调用格式为:窗体名.Close();ShowDialog方法该方法的作用是将窗体显示为模式对话框。其调用格式为:窗体名.ShowDialog();窗体常用的事件主要有。Activated事件当使用代码激活或用户激活窗体时发生 closing事件关闭窗体中发生。closed事件关闭窗体后发生 Load事件在载入窗体时发生。如下代码。/载入窗体时将窗体的标题栏取消private void Form1_Load(object sender,EventArgs e)this.FormBorderStyle=FormBorderStyle.None;/设置窗体的边框样式为None,7.1.4 常用的输入输出方法,在Windows应用程序中,我们经常需要用户输入信息和向用户输出信息。在前面章节中我们介绍了如何使用控制台输入输出信息,下面我们简单介绍一下使用Windows窗体和控件输入输出信息。常用的可接受信息的控件有:Lable控件、TextBox控件等,我们将在下面章节中详细向大家介绍。常用的输出方法有:MessageBox()、Lable控件和TextBox控件等。MessageBox是一个消息框对象。要创建消息框,需要调用MessageBox的Show()方法来实现,,而Show()方法有很多重载方式,常用的有4种类型。,最简单的消息框MessageBox.Show(“消息内容”);如图所示。带标题的消息框MessageBox.Show(“消息内容”,“消息框标题”);如图所示。带标题、按钮的消息框MessageBox.Show(“消息内容”,“消息框标题”,消息框按钮);如图所示。带标题、按钮、图标的消息框MessageBox.Show(“消息内容”,“消息框标题”,消息框按钮,消息框图标)。,第 7 章 Windows应用程序开发初步常用窗体控件,窗体的属性和方法 常用的输入输出方法 标签控件和超链接控件 文本控件、单选按钮和复选按钮 图片控件和进度条控件 选项卡控件和Timer控件 Windows应用程序的结构和开发步骤,7.2 利用“积木”编程序-常用Windows窗体控件,在Windows应用程序中,控件是用户界面的基本单元。在容器所定义的区域中,控件直接与用户交互。Windows应用程序支持多种控件,在Visual Studio 2008开发环境下根据功能可将控件划分为7种类型。文本类控件(如TextBox控件)、动作类控件(如Button控件)、列表类控件(如ListBox控件)、值类控件(如CheckBox控件)、图形显示类控件(如PictureBox控件)、日期类控件(如PictureBox控件)和容器类控件(如GroupBox控件)。下面我们将详细介绍此类控件。,7.2.1 标签控件和超链接标签控件,Lable控件是一个标签控件。LinkLable是一个带超链接的标签控件,它继承于Lable控件,所以Lable控件和LinkLable控件用法相似。Lable是最常用的控件,在任何Windows应用程序中都可以看到标签控件。标签控件用于显示用户不能编辑的文本或图像,常用于对窗体上各种控件进行标注或说明。Lable控件的Image属性可以设置显示的图片。下面表格列出了Lable控件的常用成员。,成员名称类别说明AutoSize属性指定控件是否按内容自动调整大小BorderStyle属性指定控件框风格FlatStyle属性指定控件平面风格Image属性指定控件要显示的图像Show方法将控件的Visiable属性设为True并显示控件Hide方法用于隐藏控件Keypress事件当标签有焦点且用户按下某个键时发生Click事件当点击标签时发生下面代码将演示如何使用Lable控件进行编程。01 label1.Text=欢迎你;/设置Lable控件的Text属性02 if(this.label2.Visible=true)/判断Lable2控件是否可见03 04 this.label2.Hide();/将Lable2控件隐藏05 this.label3.Text=显示控件;06 return;07,LinkLable控件能够让用户向Windows窗体应用程序添加Web样式的链接。所有可以使用Lable控件的地方都可以使用LinkLable控件,另外,用户可以将文本的一部分设置为指向某个对象或网页的链接。该控件支持Lable控件中的所有属性、方法和事件。下面介绍该控件的LinkArea属性,该属性用于表示必须显示为超级链接的文本。如代码中LinkArea(5,8)表示文本内链接区域的从第五个字符开始、长度为8的字符显示为超级链接。01 linkLabel1.LinkArea=new LinkArea(5,8);,7.2.2 按钮控件,Button是一个按钮控件,该控件允许用户通过点击来执行各种操作。程序使用这个控件的时候通常需要做两个工作。设置按钮属性。编写Click事件方法下面表格列出了Button类的主要成员及其说明。成员名称类别说明AutoSizeMode属性自动调节大小的模式DialogResult属性单击时返回窗口的结果PerformClick方法引发一个单击事件其中DialogResult属性比较常用,一般用于不执行任何动作的“确定”或“取消”按钮。但其对于那些需要条件判断才返回的情况不适用。,下面代码演示了Button控件的Click事件。01 private void button1_Click(object sender,EventArgs e)/Button控件的Click事件02 03 if(true)/如果为真,返回结果给窗体04 05 this.DialogResult=DialogResult.OK;06 07,7.2.3 文本框控件和分组框控件,TextBox控件是一个普通的文本框控件。该控件的作用是向用户提供输入和显示文本。默认情况下,控件以单行显示,最多可输入2048个字符,如果设置Multiline属性为True,将以多行的形式显示,且最多可输入32KB的文本。,下面表格列出了TextBox类的主要成员及其说明:成员名称类别说明TextAlign属性指示应该如何对齐编辑框内的文本。Dock属性停靠位置,停靠到父容器的哪一个边缘BorderStyle属性文本框控件的边框类型。PasswordChar属性密码输入显示的字符。Multiline属性指示它是否为多行文本框控件。TextChanged事件Text 属性值更改时发生。Click事件单击文本框时发生。GetFocus事件在控件接收焦点时发生。LostFocus事件当控件失去焦点时发生KeyPress、KeyDown事件在控件有焦点的情况下按下键时发生KeyUp事件在控件有焦点的情况下释放键时发生通过对Textbox控件的MaxLength和PasswordChar属性可以实现限制用户名称长度及设置密码文本,代码如下。01 textBox1.MaxLength=6;/设置文本框textBox1的最大长度为602 textBox1.PasswordChar=*;/设置文本框显示字符为*,TextBox控件比较常用的方法是操作文本的方法,如AppendText方法用于在文本框中当前显示的文本末尾添加指定的文本,Clear方法用于清空当前文本框中显示的文本,另外还有Copy、Cut和Paste方法。下面代码实现了控件中选中文本的复制和剪切。01 if(textBox1.SelectionLength 0)/判断被选择的文本长度是否大于002 textBox1.Copy();/复制文本框中被选中的文本03 if(textBox1.SelectedText!=)/判断文本框中有没有文本被选中04 textBox1.Cut();/剪切文本框中北选中的文本,GroupBox是一个分组框控件。,该控件主要为其它控件提供分组,按照控件的分组来细分窗体的功能。分组框控件属于容器控件,一般不对该控件编码。为什么使用该控件呢?可以得到以下三个方面的好处。对相关窗体元素进行可视化分组以构造一个清晰的用户界面。创建编程分组(例如,单选按钮分组)。设计时将多个控件作为一个单元移动。,下表列出了GroupBox类的常用成员及其说明。成员名称类别说明AutoSizeMode属性指定用户界面元素自动调整自身大小的模式Text属性与控件关联的文本下面代码演示了如何设置GroupBox控件的属性.01 private void InitGroupBox(GroupBox groupBox)02 03 groupBox.Text=GroupBox控件示例;04 groupBox.FlatStyle=FlatStyle.Flat;05,【范例7-1】TextBox控件示例,新建一个C#Windows窗体应用程序,项目名称为“TextBoxSample“。向Windows窗体中添加一个两个文本框控件,两个按钮控件,设计如图所示界面。双击窗体空白区域,切换到代码视图,在Form_Load事件中编写如下代码(代码7-1-1.txt)。,7.2.4 单选按钮控件和复选框控件,RadioButton控件是一个单选按钮。在同一容器控件中,有两个或两个以上的RadioButton控件将产生互斥。也就是说,只能选择一个。下表列出了RadioButton类的主要成员及其说明。,01 if(radioButton1.Checked=false 04,CheckBox控件是一个复选框。,该控件默认用于向用户提供两种状态选择:True和False。当其TreeState属性为True时,可以设置三种状态,另外一种为不确定状态(Indeterminate)。下表列出了CheckBox类的常用属性及其说明。成员名称类别说明Checked属性指示组件是否处于选中状态Enabled属性指示是否已启用该控件ThreeState属性指示CheckBox是否会允许三种选中状态,而不是两种状态Click事件单击组件时发生CheckedChanged事件每当Check属性更改时发生CheckStateChanged事件每当更改CheckState属性时发生Focus方法为控件输入焦点下面代码演示了使用Checked属性判断复选框是否选中,并给出提示信息。01 if(this.checkBox1.Checked=false 05,01 if(radioButton1.Checked=false 04,下面代码演示了通过在CheckedChanged事件处理程序中编写代码,给出提示信息。01 private void checkBox1_CheckedChanged(object sender,EventArgs e)02 03 if(this.checkBox1.Checked=true)/判断是否选择了checkBox104 05 MessageBox.Show(你选择的是checkBox1);/显示选择的内容06 07,【范例7-2】Button控件示例,新建一个C#Windows窗体应用程序,项目名称为“ButtonControl”。向Windows窗体中添加四个Lable控件,一个TextBox控件,两个RadioButton控件,三个CheckBox控件和一个Button控件,设计如图所示界面。切换到代码视图,在提交信息按钮的Click事件中编写如下代码(代码7-2.txt)。,7.2.5 列表框控件和组合框控件,ListBox是一个列表框控件,该控件可以显示较长的选项列表,用户可从中选择一项或多项。该控件默认显示一列选项。当ListBox控件的MultiColumn属性为True时,列表以多列形式显示项。如果项总数超出可以显示的项数,则自动向ListBox控件添加滚动条。ListBox控件列表中的每个元素成为项。,下表列出了ListBox类的常用成员及其说明。,成员名称类别说明DataSource属性指示此控件将用来获取其项的列表Items属性列表框中的项。SelectedItem属性指定控件中当前选定内容的对象SelectedIndexChanged事件SelectedIndex属性值更改进发生SelectedValueChanged事件在ListControl上更改SelectedValue属性的值时引发的事件续表成员名称类别说明Add()方法向ListBox的项列表添加项AddRange()方法向ListBox的项列表添加项的数组Clear()方法向ListBox中移除所有项Insert()方法将一项插入集全中指定索引处Remove()方法向ListBox中移除指定项RemoveAt()方法向ListBox中指定索引处的项我们将重点介绍一个Items属性。该属性使用户可以获取对当前存储在ListBox中的项列表的应用。通过此引用,可以在集合中添加项,移除项和获得项的数目。,下面代码演示了如何使用ListBox类的方法实现向列表中添加、修改项,01/单击添加按钮事件02 private void btnAdd_Click(object sender,EventArgs e)03 04 if(this.txtInput.Text!=)/如果文本框非空,则进行添加05 06 this.listBox1.Items.Add(this.txtInput.Text);07 this.txtInput.Text=;/添加完毕,文本框置空08 09,10/单击修改按钮事件11 private void btnUpd_Click(object sender,EventArgs e)12 13 if(nSelectedIndex-1)14 15 this.listBox1.ItemsnSelectedIndex=this.txtInput.Text;16/对选中的那一条的内容进行修改17 18,ComboBox是一个组合框控件。,该控件可让用户输入或下拉选择内容。它结合了TextBox控件和ListBox控件的功能。组合框(ComboBox)控件几乎支持列表框控件的所有属性。下表列出了ComboBox类的常用成员及其说明成员名称类别说明DropDownStyle属性此属性表示ComboBox的样式Items属性组合框中的项MaxDropDownItems属性在下拉列表框中显示的最多项数Click事件单击组件时发生SelectedIndexChanged事件SelectedIndex属性值更改时发生SelectedValueChanged,事件在ListControl上更改SelectedValue属性的值时引发其中DropDownStyle属性取值可以为Simple、DropdownList和Dropdown等。取值为DropDown时,文本部分可编辑,用户必须单击箭头按钮来显示列表部分,这是默认值;取值为DropDownList时,用户不能直接编辑文本部分,必须单击箭头按钮来显示列表部分;取值为Simple时,文本部分可编辑,而且列表部分可见。例如,将ComboBox控件的DropDownStyle属性设置为“DropDownList”代码如下。01 comboBox1.DropDownStyle=ComboBoxStyle.DropDownList;ComboBox最重要的事件是SelectedIndexChange事件,该事件主要在SelectedIndex属性更改后发生。,【范例7-3】带查询功能的ComboBox控件,启动Visual Studio 2008,新建一个C#Windows窗体应用程序,项目名称为“ComboBoxSample“。向Windows窗体中添加两个Lable控件,一个GroupBox控件,一个ComboBox控件,设计如图所示界面。切换到代码视图,在窗体的Form_Load事件中编写如下代码(代码7-3.txt)。,7.2.6 图片框控件和进度条控件,PictureBox控件是一个图片显示控件。该控件可以显示的图片格式有:BMP、GIF、JPEG、ICO和图元文件等。其SizeMode属性可以设置图片的显示方式,如缩放、拉伸、自动大小等。成员名称类别说明BorderStyle属性指定控件边框的风格Enabled属性指定控件是否可用Image属性指定控件显示的图片ImageLocation属性指定图片的位置SizeMode属性指定图片的显示方式WaitOnLoad属性确定图像是否是同步加载的,下面对比较常用的成员进行详细介绍。SizeMode属性。此属性用于设置PictureBox控件将如何处理图像位置和大小。语法:public PictureBoxSizeMode SizeModeget;set;属性值:PictureBoxSizeMode值之一,默认为Normal。PictureBoxSizeMode:一个返回值,用来处理图像位置和大小。PictureBoxSizeMode属性值及其说明如下表。属性值说明Normal图像被置于PictureBox的左上角。如果图像比包含它的PictureBox大,则该图像将被剪裁掉。StretchImagePictureBox中的图像被拉伸或收缩,以适合PictureBox的大小。AutoSize调整PictureBox大小,使其等于所包含的图像大小。CenterImage如果PictureBox比图像大,则图像将居中显示。如果图像比 PictureBox大,则图片将居于PictureBox中心,而外边缘将被剪裁掉。Zoom图像大小按其原有的大小比例被增加或减小。如下代码演示了将图像居中显示。01 this.PictureBox1.SizeMode=PictureBoxSizeMode.CenterImage;ProgressBar控件时一个进度显示控件。该控件可以让用户了解一个操作的进度,常用于加载,大量数据和大文件,帮助用户了解等待一定长时间的操作完成所需的时间。成员名称类别说明Maximum属性此ProgressBar正使用的范围的上限Minimum属性此ProgressBar正使用的范围是下限Step属性指定Value属性递增的值Value属性ProgressBar的当前值,在由最小和最大值指定的范围之内PerformStep方法该方法按照Step属性中指定的数量增加进度栏的值Step属性用于指定Value属性递增的值。其值为每次调用PerformStep方法增加进度栏所根据的数量,默认值为10.。,下面代码演示了如何使用ProgressBar控件的属性和方法。,01 private void button1_Click(object sender,EventArgs e)02 03 this.pgrLoad.Maximum=100;/设定起始值04 this.pgrLoad.Minimum=0;/设定结束值05 this.pgrLoad.Step=10;/设定步长值06 for(int i=0;i=100;i+)/循环100次,演示ProgressBar的运行07 08 if(i%10=0)/判断是否为10的倍数09 pgrLoad.PerformStep();/增进一步10 11,7.2.7 日期控件,DateTimePicker控件允许用户从日期或时间列表中选择单个项,用来表示日期。该控件显示为两部分:一部分为下拉列表(以文本形式显示的日期),另一部分为网格(在单击列表旁边的向下箭头时显示)。用户也可以直接输入日期和时间。通过设置该控件的Format属性可以选择显示格式。成员名称类别说明Checked属性当ShowSelectBox为true时,确定是否选中复选框,以指示用户已选择了某个值。Format属性确定日期和时间是用标准格式显示还是用自定义个数显示。MaxDate属性可以选择的最大日期,MinDate属性可以选择的最小日期ShowUpDown属性指示是否使用数值调节钮控件(也称为 up-down 控件)调整日期/时间值DropDown事件在下拉日历将要下拉时发生CloseUp事件在下拉日历被关闭并消失时发生ToString方法返回表示当前DateTimePicker控件的字符串GetType方法获取当前实例的System.Type下面详细介绍DateTimePicker控件的常用成员 Value属性。此属性指当前控件的日期或时间值。属性值为分配给控件的DateTime值。,ToString方法。用于返回表示当前DateTimePicker控件的字符串。返回值返回表示当前DateTimePicker的字符串,该字符串包括该控件的类型和Value属性。下面代码演示了如何使用DateTimePicker控件的属性、事件和方法01 public partial class frmData:Form/窗体名为frmData02 03 private void dateTimePicker1_CloseUp(object sender,EventArgs e)04/下拉日历关闭时执行如下代码05 this.textBox1.Text=dateTimePicker1.Value.ToString();06 07 private void button1_Click(object sender,EventArgs e)08/设置日期和时间格式09 dateTimePicker1.Format=DateTimePickerFormat.Custom;10 this.dateTimePicker1.CustomFormat=dddd dd MMM yyyy;11 12,7.2.8 选项卡控件,TabControl控件也称为分页控件。该控件可以添加多个选项卡,然后在选项卡上添加子控件。这样就可以把窗体设计成多页,使窗体的功能划分为多个部分。TabControl控件的标签可以显示文本信息,也可以显示图标。下表列出了TabControl类的主要成员及其说明。成员名称类别说明Alignment属性确定选项卡是否显示在控件的顶部,底部,左侧或右侧(在左侧或右侧时将隐式地分为多行)指示代码中用来标识该对象的名称Appearance属性指示选项卡是绘制成按钮还是绘制成普通选项卡DrawMode属性指示是由系统还是由用户绘制标题,Multiline 属性指示当 TabControl 中包括很多标签时,标签页的标签是否可以换行TabPages属性获取该选项卡控件中选项卡页的集合TabPages属性值TabPageCollection,它包含TabControl中的TabPage对象。此集合中的选项卡页的顺序反映了选项卡在控件中出现的顺序。,下面代码演示了在程序运行时向TabPages中添加项。,01 this.tabPage1.Text=功能1;/设置选项卡的名称02 this.tabPage2.Text=功能2;/设置选项卡的名称03 string strName=功能+Convert.ToString(this.tabControl1.TabPages.Count+1);/将选项卡的名称按个数显示,如功能、功能、功能等04 string strTap=tabPage+Convert.ToString(this.tabControl1.TabPages.Count);05 this.tabControl1.TabPages.Add(strTap,strName);/添加新的选项卡,7.2.9 Timer控件,Timer控件是一个定时引发事件的组件。该组件每隔一个指定的周期产生一个Tick事件,接收到此事件就可以执行相应的动作。下表列出了Timer控件的主要成员以及说明。成员名称类别说明 Enable属性启用Elapsed事件生成 Interval属性Elapsed事件的频率(以毫秒为单位)Tick 事件每当经过指定的时间间隔时发生Start()方法启动计时器Stop()方法停止计时器,下面对比较重要的成员进行详细介绍。Enable属性。此属性用于指定计时器是否运行,此属性设置为True,则表示可以启动计时器。Interval属性。获取或设置英法Elapsed事件的间隔。属性值为引发Elapsed事件的间隔时间(以ms为单位)。默认值为100ms。如下代码。01 this.timer1.Interval=1000;/设置Elapsed事件的频率,间隔时间为100ms02 this.timer1.Enabled=false;/设置timer1不可用,无法启用Elapsed事件 Tick事件。该事件在当指定的计时器间隔已过去而且计时器处于启用状态时发生。如下代码。01 private void timer1_Tick(object sender,EventArgs e)/Tick事件02 03 this.label2.Text=现在时间为:+DateTime.Now.ToString();/在label2上显示现在时间04,【范例7-4】显示操作进度。启动Visual Studio 2008,新建一个C#Windows窗体应用程序,项目名称为“TimerSample“。向Windows窗体中添加一个Timer控件,一个ProgressBar控件,两个Lable控件。在属性窗口中将ProgressBar控件的最大值设为200,最小值设为0。,第 7 章 Windows应用程序开发初步常用窗体控件,窗体的属性和方法 常用的输入输出方法 标签控件和超链接控件 文本控件、单选按钮和复选按钮 图片控件和进度条控件 选项卡控件和Timer控件 Windows应用程序的结构和开发步骤,7.3 Windows应用程序的结构和开发步骤,一个标准的Windows窗体应用程序由窗体、控件及其事件所组成。当为应用程序设计用户界面时,通常创建一个从Form派生的类。然后可以添加控件、设置属性、创建事件处理程序以及向窗体添加编程逻辑。添加到窗体的每个组件(如文本框、按钮、Timer、标签等)都称为控件。Windows窗体编程的一个重要方面就是控件编程。一般来说,控件都会有自己的属性、方法以及特定的事件。控件编程的关键就是了解这些属性、方法和事件的用法。事件是Windows应用程序的重要组成部分。Windows应用程序是由事件驱动的,整个程序的运行过程都离不开事件和事件处理。程序编制也以事件处理为核心。在应用程序结束时,需要调用Dispose()方法释放资源,以充分利用资源。.NET框架类模型在Component类中提供Dispose()方法。当不再需要某个组件时,调用Dispose()方法。例如,当关闭某窗体时,Windows窗体对该窗体以及该窗体内包含的所有控件调用Dispose()方法。通常使用Dispose()来及时释放大量资源并移除对其他对象的引用,以便它们可以由垃圾回收进行回收。还调用它以停止与该窗体关联的任何正在执行的程序逻辑。应使Dispose()方法中的代码尽可能的简单和可靠。Component的Dispose()方法如下。,7.3 Windows应用程序的结构和开发步骤,01/清理所有正在使用的资源。02/03/如果应释放托管资源,为 true;否则为 false。04 protected override void Dispose(bool disposing)/析构函数,释放资源05 06 if(disposing/调用基类的Dispose方法该方法用来释放掉控件可以管理的资源和可选择的释放掉控件不可管理的资源。参数disposing为True时,释放掉可管理的资源;参数disposing为False时,释放掉不可管理的资源。一般来说,在使用向导生成应用程序时,向导会自动为你添加Dispose()方法的。,7.3 Windows应用程序的结构和开发步骤,一般来说,编写一个Windows应用程序包括以下几个步骤。创建和显示作为应用程序的主入口点的窗体 向窗体添加所需的控件 设置控件的属性 为控件添加事件处理程序 关闭窗体时,执行Dispose方法,See you later!,7.5 跟我上机,在C#中编写一个Windows应用程序,制作一个简单计算器。要求能够进行简单的四则运算。,