,*,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Click to edit Master title style,第,3,章,Windows,窗体与控件,内容简介,Windows,窗体是以,.NET Framework,为基础的一个新平台,主要用来开发,Windows,应用程序。一个,Windows,应用程序通常由窗体对象和控件对象构成,即使开发一个最简单的,Windows,应用程序,也必须了解窗体对象和控件对象的使用。,本章主要介绍,Windows,窗体的结构和常用属性、方法与事件,以及,Label,、,LinkLabel,、,TextBox,、,Button,几种常用控件的使用。,目录,3.1,窗体,3.2,几种常用控件,3.3,本章小结,3.1,窗体,窗体(,Form,)就是平常所说的窗口,各种控件对象必须建立在窗体上。窗体对象是,Visual C#,应用程序的基本构造模块,是运行应用程序时与用户交互操作的实际窗口。窗体有自己的属性、方法和事件,用于控制其外观和行为。,3.1.1,窗体的结构,窗体是包含所有组成程序的用户界面的其他控件的对象。在创建,Windows,应用程序项目时,,Visual Studio 2008,会自动提供一个窗体,其组成结构如,图,3.1,所示。,3.1.1,窗体的结构,图,3.1,窗体的结构,3.1.1,窗体的结构,在创建,Windows,应用程序时,,Visual Studio 2008,会将,窗体文件命名,为,Form1.cs,,建议编程人员将其改为能够描述程序用途的名称。,在,【,解决方案资源管理器,】,中选择,Form1.cs,,在,【,属性窗口,】,中显示出相应文件属性,双击,“,文件名,”,属性框的右侧区域,输入新的文件名,如图,3.2,所示。也可以直接在,【,解决方案资源管理器,】,中右击,Form1.cs,,在弹出的快捷菜单选择,“,重命名,”,,输入新的文件名即可。,提示:将应用程序的窗体文件名改为能够描述程序用途的名称,是一个良好的编程习惯。,3.1.2,窗体的属性,窗体有一些表现其特征的属性,可以通过设置这些属性控制窗体的外观。窗体的主要属性如,表,3-1,所示。,属性值的设置有两种方式:一种是在,设计,程序时,通过属性窗口实现;一种是在,运行,程序时,通过代码实现。,通过代码设置属性的一般格式是:,对象名,.,属性名,=,属性值,;,3.1.3,窗体的方法,窗体具有一些方法,调用这些方法可以实现特定的操作。窗体常用的方法如,表,3-2,所示。,3.1.3,窗体的方法,关闭窗体与隐藏窗体的区别,在于:关闭窗体是将窗体彻底销毁,之后无法对窗体进行任何操作;隐藏窗体只是使窗体不显示,可以使用,Show,或,ShowDialog,方法使窗体重新显示。,模式窗体与非模式窗体的区别,在于:模式窗体,在其关闭或隐藏前无法切换到该应用程序的其他窗体;非模式窗体,则可以在窗体之间随意切换。,调用方法的一般格式为:对象名,.,方法名,(,参数列表,),。如果要对调用语句所在的窗体调用方法,则用,this,关键字(表示当前类的对象)代替对象名,即:,this.,方法名,(,参数列表,);,在面向对象的程序设计中,还有一种特殊的的方法叫,静态方法,,这种类型的方法通过类名调用。调用的一般格式为:,类名,.,静态方法名,(,参数列表,);,3.1.4,窗体的事件,窗体作为对象,能够执行方法并对事件做出响应。窗体的常用事件,如,表,3-3,所示。,3.1.4,窗体的事件,如果要为窗体对象添加,事件处理程序,,首先在设计器窗口选中窗体对象,然后在属性窗口的事件列表中找到相应的事件并双击它,即可在代码窗口看到该窗体的事件处理程序。以,Form1,的,Load,事件为例,其事件处理程序的格式为:,private void Form1_Load(object sender,EventArgs e),/,程序代码,其中,,Form1_Load,是事件处理程序的名称,所有对象的事件处理程序默认名称都是,“,对象名,_,事件名,”,;所有对象的事件处理程序都具有,sender,和,e,两个参数,,参数,sender,代表事件的源,参数,e,代表与事件相关的数据,。,3.1.5,创建应用程序的操作界面,应用程序的操作界面由各个对象组成,创建操作界面就是在窗体上绘制代表各个对象的控件。,1.,添加控件,2.,选择控件,3.,调整控件的尺寸和位置,4.,对控件进行布局,5.,设置所有控件的,Tab,键顺序索引,6.,锁定所有控件,3.1.5,创建应用程序的操作界面,1.,添加控件,向窗体中,添加一个控件的步骤,如下,(,以按钮为例,),:,(1),单击,【,工具箱,】,中的,“,公共控件,”,选项卡,出现各种控件。,(2),将鼠标移到,Button,控件上单击,然后移到中间的窗体,这时会看到鼠标指针变成十字线的形状。,(3),将十字线放在窗体的适当位置,单击窗体并按住左键不放,拖动鼠标画出一个矩形。,(4),松开左键,会看到一个,Button,控件被创建在窗体上。,提示:,向窗体中添加控件的另一个简单方法,是,双击工具箱中的控件,。这样会在窗体的默认位置创建一个具有默认尺寸的控件,然后可以将该控件移到窗体中的其他位置。,3.1.5,创建应用程序的操作界面,2.,选择控件,一个窗体上通常有多个控件,可以一次选择一个或多个控件。,如果要,选择一个控件,,用鼠标在该控件上单击,即可选中该控件。,如果要,选择多个控件,,常用的方法有两种。一种方法是先选择第一个控件,然后按下,Shift,键(或,Ctrl,键)不放,用鼠标依次单击要选择的其他控件,选择完毕后松开鼠标即可;另一种方法是在窗体的空白位置,单击窗体并按住左键不放,拖动鼠标画出一个矩形,然后松开鼠标,则该矩形区域内的控件都会被选中。,如果要,撤销被选择的,多个控件中的某个控件,只需按住,Shift(,或,Ctrl,键,),不放,用鼠标单击要撤销选择的被选择控件。,3.1.5,创建应用程序的操作界面,3.,调整控件的尺寸和位置,调整控件的尺寸和位置,可以通过,设置控件的相应属性,来实现。但在要求的精确度不高的情况下,最快捷的方法是在窗体设计器中直接,用鼠标调整控件,的尺寸和位置。,用鼠标调整控件,尺寸,的步骤如下:,(1),用鼠标单击需要调整尺寸的控件,选定的控件上出现,8,个尺寸手柄。,(2),将鼠标指针定位到尺寸手柄上,当鼠标变为双向箭头时按下鼠标左键,拖动该尺寸手柄直到控件达到所希望的大小为止。控件角上的,4,个尺寸手柄可以同时调整控件水平和垂直方向的大小,而边上的,4,个尺寸手柄调整控件一个方向的大小。,(3),松开鼠标左键。,提示,:,也可按,Shift,键加上箭头键,来调整选定控件的尺寸。,3.1.5,创建应用程序的操作界面,3.,调整控件的尺寸和位置,用鼠标调整控件,位置,的步骤如下:,(1),将鼠标指向要移动的控件,当鼠标变为十字箭头时,按下鼠标左键不放。,(2),用鼠标把该控件拖动到新位置。,(3),松开鼠标左键。,提示,:,也可以通过键盘来调整选定控件的位置。每按一次箭头键,控件移动一个像素;如果按,Ctrl,键加上箭头键,控件每次移动一定的距离(多个像素),来与其它控件对齐。,3.1.5,创建应用程序的操作界面,4.,对控件进行布局,对控件进行布局,可以通过,【,格式,】,菜单或工具栏,实现。如果格式工具栏没有显示,可以通过,【,视图,】,菜单下的,“,工具栏,|,布局,”,命令来显示格式工具栏。格式工具栏如图,3.4,所示。,图,3.4,格式工具栏,布局的内容包括对齐、大小、间距、叠放次序等。当多个控件被同时选中时,控件的所有布局功能都可用;只有一个控件被选中时,只有少数布局功能可用。,3.1.5,创建应用程序的操作界面,5.,设置所有控件的,Tab,键顺序索引,Tab,键顺序,是指当用户按下,Tab,键时,焦点在控件间移动的顺序。每个窗体都有自己的,Tab,键顺序,每个控件在窗体上也都有唯一的,Tab,键顺序索引。默认状态下,控件在窗体上的,Tab,键顺序索引与建立控件的顺序一致。如果要设置窗体上控件的,Tab,键顺序索引,可以分别对每个控件设置其,TabIndex,属性,也可以集中设置所有控件的,Tab,键顺序索引。,3.1.5,创建应用程序的操作界面,要集中设置所有控件的,Tab,键顺序索引,可以选择菜单,【,视图,|Tab,键顺序,】,命令。如果需要改变多个控件的,Tab,键顺序索引,按照想设置的顺序依次单击各个控件。,【Tab,键顺序,】,命令,是一个切换命令,,因此设置好所有控件的,Tab,键顺序索引之后,再次选择,【Tab,键顺序,】,命令即可结束,Tab,键顺序索引的设置。,3.1.5,创建应用程序的操作界面,6.,锁定所有控件,可以把窗体及该窗体上的所有控件进行锁定,锁定之后,窗体的尺寸及控件的位置和尺寸就无法通过鼠标或键盘操作来改变。锁定控件可以防止已处于理想位置的控件因为不小心而被移动。,如果要进行锁定操作,在窗体编辑区的任意位置右击,从弹出的快捷菜单中选择,【,锁定控件,】,命令即可。本操作只锁定选定窗体上的全部控件,不影响其他窗体上的控件。,如果要调整锁定控件的位置和尺寸,可以在,【,属性,】,窗口中改变控件的,Location,和,Size,属性。,【,锁定控件,】,命令是一个切换命令,,因此,再次选择,【,锁定控件,】,命令即可解除锁定。,3.2,几种常用控件,最常用的基本控件,标签、链接标签、文本框、按钮,3.2.1,标签,Label,Label,(标签)控件的,功能,是显示不能编辑的文本信息,一般用于在窗体上进行文字说明。,标签有,Name,(名称)、,AutoSize,(自动尺寸)、,BackColor,(背景色)、,BorderStyle,(边框)、,Enabled,(可用)、,Font,(字体)、,ForeColor,(前景色)、,Image,(图像)、,Location,(位置)、,Locked,(锁定)、,Size,(尺寸)、,Text,(文本)、,TextAlign,(文本排列)、,Visible,(可见)等,属性,。,3.2.1,标签,Label,1.,设置标签的名称,任何对象都有名称,,Name,属性,指示代码中用来表示对象的名称。要设置,Label,控件的名称,首先选择,Label,控件,然后在,【,属性,】,窗口中设置,Name,属性为某个标识符即可。,例如,有一个要显示,“,学生姓名,”,文本的标签,可以设置其,Name,属性为,lblStuName,。,2.,设置标签的文本,在,Label,中显示文本,使用,Text,属性,。首先要选择,Label,控件,然后在属性窗口中设置该属性为某个字符串即可。,Label,控件中的文本默认的排列方式为靠上左对齐,通过设置,TextAlign,属性,可以改变排列方式。,TextAlign,属性值是,ContentAlignment,枚举类型,共有,9,个枚举值,默认值是,TopLeft,。如果设置,TextAlign,为,TopCenter,,则靠上居中。,3.2.1,标签,Label,3.,设置标签的图像,Image,属性,用来设置在标签上显示的图像。当在属性窗口中设置该属性时,单击该属性条,右端出现,“,”,按钮后单击它,会打开,【,选择资源,】,对话框,如,图,3.5,所示。,3.2.1,标签,Label,3.,设置标签的图像,提示,:,如果选择,“,本地资源,”,,程序运行时从,指定位置,的图像文件加载图像;如果选择,“,项目资源文件,”,,导入的图像文件会被复制到项目文件夹中的,Resources,文件夹,下,程序运行时从,Resources,文件夹下的图像文件加载图像。,如果在运行时设置,Image,