第8章可视化应用程序设计内容提要:可视化应用程序的含义Windows窗体的基本属性控件的概念、共有的属性、事件和方法常用的控件目的要求:理解属性和事件的意义掌握控件共有的属性、事件和方法掌握常用控件的用法重点难点:常用控件及控件的属性、事件和方法8.1Windows窗体Windows应用程序设计是作为图形用户界面(GUI)设计的。用户通过一些简单的操作(如鼠标的点击)来引发一些事件。Windows应用程序的界面是以窗体(Form)为基础的,窗体是Windows应用程序的基本单位,是一小块屏幕区域,主要用来向用户展示信息和接受用户的输入。标题控制按钮窗体区窗体边界8.1.1Windows窗体的基本属性1.窗体的名称属性(Name)设置窗体名称的属性是Name,该属性值主要用于在程序代码中引用窗体。在初始新建一个Windows应用程序项目时,自动创建一个窗体,该窗体的名称被默认为Form1;添加第2个窗体,其名称被默认为Form2,依次类推。2.窗体的标题属性(Text)Text属性用于设置窗体标题栏显示的内容,它的值是一个字符串。3.窗体的控制按钮属性(1)ControlBox属性:用来设置窗体上是否有控制按钮,默认为True,有控制按钮,False,无控制按钮。(2)MaximizeBox属性:用于设置窗体上的最大化按钮,默认为True,有最大化按钮,False,无最大化按钮。(3)MinimizeBox属性:用于设置窗体上的最小化按钮,默认为True,有最小化按钮,False,无最小化按钮。4.影响窗体外观的属性(1)FormBorderStyle属性:用于控制窗体边界的类型,有7个可选值。None、Fixed3D(3D边框)、FixedDialog、FixedSingle(单线边框)、Sizable(双线边框)、FixedToolWindow、SizableToolWindow(2)Size属性:用来设置窗体的大小。(3)Location属性:设置窗体在屏幕上的位置,即设置窗体左上角的坐标值。(4)BackColor属性:用于设置窗体的背景颜色,可以从弹出的调色板中选择。(5)BackgroundImage属性:用于设置窗体的背景图像。(6)Opacity属性:该属性用来设置窗体的透明度,其值为100%时,窗体完全不透明;其值为0%时,窗体完全透明。8.1.2创建窗体编写一个简单的Windows窗体的步骤:1.设计应用程序窗体(1)创建空白窗体(2)设置窗体属性2.向窗体添加控件3.为控件添加事件VC#提供了多窗体处理能力,在一个项目中可创建多个窗体,添加新窗体的方法:(1)选择项目菜单下的“添加Windows窗体”命令,打开“添加新项”对话框,如图所示。新建项目:使用WindowsFormsApplication(2)在“Project”菜单下的,选择“AddWindowsForm,然后,单击“Add按钮,就添加了一个新Windows窗体。添加第2个窗体的默认名称为Form2,依此类推。8.2控件概述窗体就好像一个容器,其他界面元素都可以放置在窗体中。控件是包含在窗体上的对象,是构成用户界面的基本元素,工具箱中包含了建立应用程序的各种控件,常用的Windows窗体控件放在“Windows窗体”选项卡下。工具箱分为:数据、组件、Windows窗体、剪贴板循环,常规。常用的Windows控件放在Windows窗体选项卡下,有十个常用控件。C#提供控件可扩展功能,可以自己建立控件,也可以网上下载或购买公司开发的控件。点击视图(View)菜单,选择Toolbox,打开工具箱,或点击工具栏上的。8.2.1控件的基本属性(1)Name属性:不区分大小写,字母开头,其后可以使数字、字母、下划线。(2)Text属性:如命令、标签、文本框。(3)尺寸大小(Size)和位置(Location)属性(4)字体(Font)属性(5)颜色(BackColor、ForeColor)属性(6)可见(Visable)和有效(Enabled)属性8.2.2控件共有的属性、事件和方法在C#,所有控件及类都是继承System.Object类的,它是所有控件与类的基类。1.System.Object类当一个类没有规定基类时,编译器会默认把System.Object类定义其基类,并且所有的派生类都可以利用或覆盖System.Object类中的函数。System.Object类的方法:(1)ToString方法:可以覆盖ToString方法。系统为用户提供了一个对象所属类的最好描述,否则将只会显示出对象所属类的名称。(2)Equals方法:Equals方法判断两个对象是否拥有同样的类型和内容。它经常应用在数组和集合中,用于判断是否是同一对象。(3)GetHashCode方法:.NETFramework提供了一个散列表(Hashtable)类,它能够通过一个代码快速地查找某个对象。2.Control类所有的窗体控件都派生自System.Windows.Forms.Control类。Control类作为各种窗体控件的基类,Control类实现了所有窗体交互控件的基本功能:处理用户键盘输入、处理消息驱动、限制控件大小等。Control类的属性、方法与事件是所有窗体控件所公有的。(1)Control类的属性Text属性Text属性是与控件对象实例关联的一段文本,是给用户看的或让用户输入的。在程序中可以直接访问Text属性,取得或设置Text的值。Anchor属性Anchor属性是用来确定此控件与其容器控件(控件中还有控件)的位置、大小变化的关系。对于Anchor属性,可以设定Top、Bottom、Right、Left中的任意几种。Dock属性Dock属性规定了子控件与父控件的边缘依赖关系(即停靠到父控件的哪些边)。Dock的值有6种:None、Top、Left、Fill、Right、Left。Capture属性Capture属性如果设为真,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内。(2)Control类的方法Control类中的方法:可以调用Control类的方法来获得控件的一些信息,或者设置控件的属性值及行为状态。例如:Focus方法可设置此控件获得的焦点;Select方法可激活控件;Show方法可显示控件;Hide方法可隐藏控件等。(3)Control类的事件当用户进行某一项操作时,会引发某个事件的发生,此时就会调用预先编写的事件处理程序代码,实现对程序的控制。Control类的可响应的事件有:单击时发生的Click事件;光标改变时发生的Cursorchanged事件;双击时发生的DoubleClick事件;拖动时发生的DragDrop事件;鼠标移动时发生的MouseMove事件等。8.3命令按钮控件(Button)1.命令按钮的用途命令按钮是用户与应用程序交互的最简便的工具,应用十分广泛。在程序执行期间,它可以用于接收用户的操作信息,去执行预先规定的命令,触发相应的事件过程,以实现指定的功能。2.常用属性(1)Text属性:该属性用于设定命令按钮上显示的文本(2)FlatStyle属性:该属性指定了命令按钮的外观风格,它有4个可选值。Flat、Popup(平面,鼠标移到上面,变立体)、System、Standard(立体)(3)Image属性:用于设定在命令按钮上显示的图形。(4)ImageAlign属性:当图片显示在命令按钮上时,可以通过ImageAlign属性调节其在命令按钮上的位置。利用此属性在属性窗口中调节非常方便。3.命令按钮响应的事件如果按钮具有焦点,就可以使用鼠标左键、Enter键或空格键触发该按钮的Click事件。通过设置窗体的AcceptButton或CancelButton属性,无论该按钮是否有焦点,都可以使用户通过按Enter或Esc键来触发按钮的Click事件。当使用ShowDialog方法显示窗体时,可以使用按钮的DialogResult属性指定ShowDialog的返回值。8.4标签控件(Label)1.标签控件的用途标签主要用来显示文本。通常用标签来为其他控件显示说明信息、窗体的提示信息,或者用来显示处理结果等信息。但是,标签显示的文本不能被直接编辑。2.标签的常用属性(1)Text属性:用于设置标签显示的内容,Text属性可包含许多个字符。(2)Autosize属性:该属性用于设置标签是否自动调整尺寸,以适应其显示的内容。此属性的系统默认值为False。(3)Borderstyle属性:该属性用于设定标签的边框形式,共有3个设定值。NoneFixedSingleFixed3D3.标3.标签相应的事件标签控件常用的事件有:Click(单击鼠标)事件和DoubleClick(双击鼠标)事件。8.5文本框(TextBox)1.文本框的用途文本框有两种用途:一是可以用来输出或显示文本信息;二是可以接受从键盘输入的信息。应用程序在运行时,如果用鼠标单击文本框,则光标在文本框中闪烁,就可以向文本框输入信息。2.常用属性(1)Text属性:应用程序运行时,在文本框中显示的输出信息或通过键盘输入的信息,都保存在Text属性中。(2)MaxLength属性:该属性用于设定文本框中最多可容纳的字符数。(3)MultiLine属性:该属性用于设定文本框中是否允许显示和输入多行文本。(4)ReadOnly属性:该属性用于设定程序运行时,能否对文本框中的文本进行编辑。(5)ScrollBars属性:该属性用于设置文本框中是否带有滚动条,有4个可选值。NoneHorizontalVerticalBoth(6)PasswordChar属性:该属性用于设置显示文本框中的替代符。3.本框控件响应的事件在文本框控件所能响应的事件中,TextChanged和LostFocus是最重要的事件。8.6单选按钮(RadioButton)和复选框(CheckBox)单选按钮(RadioButton):控件为用户提供一组互斥选项组成的选项集,只能选择一个按钮。选中时,圆圈中有一个黑点。属性:1)Text属性:为单选按钮旁的说明文字。2)Checked属性:Checked为True,表示选中,False表示没选中。当Checked属性的值更改时,将引发CheckedChanged事件。事件:1)Click事件:鼠标点击复选框时,触发Click事件,并改变Checked的值。2)CheckedChanged事件:Checked值改变时,触发该事件。privatevoidradioButton1_CheckedChanged(objectsender,EventArgse){textBox1.Text=200元;}privatevoidradioButton2_CheckedChanged(objectsender,EventArgse){textBox1.Text=100元;}privatevoidradioButton3_CheckedChanged(objectsender,EventArgse){textBox1.Text=150元;}复选框(CheckBox)在一组复选框中则可以同时选择任意多项。选中时,方块内出现打钩标记。属性:1)Checked属性:返回两个值true(选中)和false(未选中)。2)CheckState属性:用来描述当前状态,该属性的值可以是:(1)Checked:当前被选中。(2)UnChecked:当前被选中。(3)Indeterminate:当前状态未定,呈变灰。3)Text属性:复选框旁的说明文字。事件:1)Click事件:鼠标点击复选框时,触发Click事件。2)CheckedChanged事件:Checked值改变时,触发该事件。3)CheckStateChanged事件:CheckedState值改变时,触发该事件。应用程序中不使用Click事件,常使用CheckedChanged事件和CheckS