收藏 分销(赏)

第五章书店管理系统界面设计.ppt

上传人:仙人****88 文档编号:13327812 上传时间:2026-03-02 格式:PPT 页数:168 大小:2.40MB 下载积分:10 金币
下载 相关 举报
第五章书店管理系统界面设计.ppt_第1页
第1页 / 共168页
第五章书店管理系统界面设计.ppt_第2页
第2页 / 共168页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第五章 本书学习情境:书店管理系统界面设计,5.1,学习情境引入,我们学习了,C#,语言的基本语法,就可以开始用计算机能“理解”的语言表达我们的逻辑思想了,在不断的运用中,逐渐熟练掌握这些语法。,开发单机用的“书店管理系统”,除了要用计算机语言描述程序逻辑并写出一段程序外,还要设计程序的用户界面。书店管理系统就是由一个一个的窗体界面组成的,也就是,Windows,程序窗体界面。友好的窗体界面可以极大地提高人机对话能力,因此窗体界面的设计对应用程序而言是极其重要的,5.1.1,项目需求,根据书店管理系统项目需求分析,该项目包括登录窗口、主窗体、采购管理、销售管理、仓储管理等界面。,1,登录窗口,要保证系统的安全性,就需要在使用系统前进行安全身份验证。一般通过输入用户名和密码的形式进行验证,并在登录后记录当前用户及其角色。,2,主窗体界面,作为一个书店管理系统,结合实际需求分析可知,它要完成的主要业务有采购、仓储、销售、财务。系统应具有供店员完成进书及销售等一系列工作的操作,以及对书店财务账目的操作和管理的功能模块,并且每个模块下又有许多子功能。,3,采购管理,采购模块供采购人员使用,完成图书信息录入、打印入库单的工作,并可以查询以往采购的图书信息和入库单信息。,为了在多次采购同类图书时,避免重复录入烦琐的图书信息,要在采购模块中设置书目管理子模块,对采购的图书信息进行管理,包括录入、查询、修改图书信息等功能。,在填写入库单时,只需调用已有的书目信息,即可避免重复录入。入库单管理子模块包括填写、打印入库单等功能。对已经打印、填写错误的出库单,只要仓库管理员未执行出库,销售人员还可以修改,但不允许删除。,4,销售模块,销售模块包含销售统计和出库单管理两个子模块,供销售人员填写、打印出库单,并进行销售统计。对已经打印、填写错误的出库单,只要仓库管理员未执行出库,销售人员还可以修改,但不允许删除。销售统计是指统计某个时段的畅销书和滞销书等,需要访问出库单表获取销售信息并访问库存表获取价格信息。,5,仓储管理,库存模块供仓库管理员凭入库单,/,出库单执行入库,/,出库以及库存查询功能。,5.1.2,展示,1,登录窗口,图,51,登录窗口界面设计,书店登录窗口的主要作用是接收用户的相关信息,用于验证用户的身份并为用户创建相应的用户书店管理目录环境。所以界面中加有两个文本框和两个按钮及两个标签,如图,5-1,所示,2,书店管理系统主界面,建立书店管理系统的主界面,界面中加有菜单栏,如图,5-2,所示,。,3,书店管理系统添加图书信息界面,添加图书信息界面中有标签、文本框、按钮、图片框等控件,主要完成图书信息的录入,如图,5-3,所示,。,5.1.3,技术分解,项目展示的,3,个窗体界面从技术上讲每一个界面就是一个控件,界面内的每一个元素又是一个控件。在这里窗体界面是其他控件的一个容器,在这个容器中包含了其他控件。如图,5-4,所示的登录窗体界面,主界面是,Form,控件,,Form,控件内有,Label,控件(欢迎使用书店管理系统、用户名:密码:)、,TextBox,控件(界面中的输入文本框)、,Button,控件(确定、取消按钮),如图,5-4,所示。,同样道理的书店管理系统的其他界面也是由控件组成的,只是所用的控件不同而已。从某种意义上讲,书店管理系统界面设计,就是如何合理地使用控件来完成所设计功能的过程。,通过本章的学习,我们可以设计由多个窗体组成的书店管理信息系统。开发平台为我们提供了很多控件,各控件有不同的属性、事件、方法,但是书店管理系统用到的控件种类有限。希望初学者注意从最常用的开始学习,逐渐举一反三,并培养自己利用,MSDN,来学习其他更多控件使用方法的良好习惯。本章需要了解的基本知识如下。,控件的基本概念。,窗体的方法、属性及事件。,常用的几类控件的方法、属性及事件。,基本知识,1,:控件类,5.2.1,控件类的属性、方法和事件,控件(,Controls,)是完成用户交互的组件。控件可以提供处理数据、接收用户输入、对事件做出响应或执行连接用户和应用程序等其他功能。控件本质上是具有图形接口的组件,所以它能提供组件所提供的功能并与用户进行交互。,VS.NET 2008,提供了丰富的窗体控件,“工具箱”中的“所有,Windows,窗体”里面包含了所有,Windows,窗体的标准控件,像标签控件(,Label,)、按钮控件(,Button,)、文本框控件(,TextBox,)等,工具箱中的每个控件都对应一个类,这些类均派生自,System.Windows.Forms.Control,类。作为各种窗体控件的基类,,Control,类实现了所有窗体交互控件的基本功能,如处理键盘输入、处理消息驱动、限制控件大小等。,.NET,已经为我们设计好工具箱中的控件类,初学者的任务是学会使用这些类的公开成员,并将各种不同的控件,组合在一个窗体中,也就是设计一个新的窗体类。,学习窗体和其他控件的使用,就是学习它们的属性、方法和事件。,1,属性,如上一章所述,属性公开了类的数据成员。比如控件的名称,数据成员公开为,Name,属性。获取某个控件的,Name,也就得到了控件的名称;给某个控件的,Name,赋值,也就更改了控件的名称。控件的属性很多,如,Text,属性对应控件上显示的文字、,ForeColor,属性对应控件上文字的显示颜色等。,C#,是强类型语言,对属性值的操作必须类型匹配。,例如,设置,textBox1,控件的,Text,属性。,textBox1.Text=Hello world!,;,/,这是正确的。,textBox1.Text=123,;,/,这是错误的,因为,123,是,Int32,类型,而,TextBox,控件的,Text,属性是,String,类型的。,因此,要了解属性的含义及其数据类型。图,55 Windows,窗体的属性面板,在,Visual Studio.NET,中,可以直接在属性面板上更改属性的值。属性面板一般在窗口右边,可以按,F4,键显示,或操作菜单“视图,|,属性窗口”,如图,5-5,所示。,2,方法,方法是一个执行对象的行为的成员。程序员要实现用户要求的逻辑功能,经常会调用某个类的方法,来使对象完成某种行为。,方法有一个形式参数列表(可能为空)和一个返回数值(或,void,),并且可以是静态也可以是非静态。静态方法要通过类来访问。非静态方法,也称为实例方法,要通过类的实例(对象)来访问。方法可以被重载,这意味着多个方法可能有相同的名称。,程序员应主要掌握常用方法的参数和返回值。,3,事件,控件的事件,对应着控件从初始化到和用户交互以至最后销毁,所经历的各个发展阶段。控件的每个事件,都对应着特定的时机。比如,Button,类控件的,Click,事件,在用户单击此按钮时发生;再如,Form,类的,Load,事件,在窗体初始化后、还未显示时发生。,每个事件发生时,都会自动执行关联的一个(或多个)方法,这个方法称为事件委托函数,该函数的参数是事件发生时的环境参数。当然,前提是程序员事先编好了这样的方法,并指定了此方法和某个事件关联。,选择合适的事件,编写事件委托函数,是,Windows,窗体程序设计的工作线索。例如,要求在窗体显示之前用程序设置窗体的标题栏为“欢迎”,我们应该选择,Form,的,Load,事件,而不是,Button,的,Click,事件。,程序员要了解事件发生的时机和事件的参数。,在,Visual Studio.NET2008,的可视化设计界面中,把选中对象的所有事件都列了出来,集中在属性面板的事件列表中,如图,5-6,所示。,在这个事件列表中,左边是这个对象支持的事件,右边是这个事件发生时要执行的方法。如果是空的,那么这个对象将不对这个事件做出反应。因此,事件和方法可以通过这里连接起来。,在,.NET,中,只要双击事件的名称,系统就会把这个事件默认的处理方法和这个事件关联起来,即前述的事件委托。比如,双击,Click,事件,属性栏就会变为如图,5-7,所示的形式。,在,Form1.Designer.cs,文件中,窗体设计器生成的代码里,则会自动出现以下语句,该语句和图,5-7,中的事件表格是一致的:删除此句,属性面板中的“,Form1_Load”,就会自动消失;清除属性面板中的“,Form1_Load”,,下面的语句就会被自动删除。,this.Load+=new System.EventHandler(this.Form1_Load);,出现上面的语句时,,Load,事件和,Form1_Load,方法就关联起来,即建立了委托关系。也就是程序运行时,在发生窗体,Form1,被用户,Load,的事件时,就会自动执行,Form1_Load,方法。,与此同时,系统会在,Form1.cs,文件中自动添加,Form1_Load,方法的声明,代码如下。,private void Form1_Load(object sender,EventArgs e),该方法有两个参数,第一个是,object,类型,代表发生事件的对象,此处为,Form1,对象;第二个是,EventArgs,类型,代表发生,Load,事件时的环境参数。只要在此方法中写入:,this.Text=”,欢迎”,;,就可以实现在窗体显示之前,用程序设置窗体的标题栏为“欢迎”的功能了。,5.2.2,自测,1,思考题,(,1,)在,Visual Studio.NET,中,如何设置控件的属性?,(,2,)在,Visual Studio.NET,中,如何应用控件的事件?并举例说明。,基本知识,2,:,Form,类,C#,中的,Windows,应用程序是以窗体(,Form,)为基础的。,Windows,窗体是组成应用程序用户界面的窗口或对话框,可用来向用户显示信息并接受用户的输入。窗体可以是标准窗口、多文档界面(,MDI,)窗口、对话框等。,新建,Windows,应用程序模板的项目时,,IDE,(,Integrated Development Environment,)将自动建立一个,Form1,类的窗体,它派生自,Form,类。,窗体类可以有静态成员,但从,Form,类继承的多数属性和方法都是实例方法,比如窗体的尺寸属性、显示窗体的方法等。所以,在程序运行时显示出的窗体是由该类创建的实例。在程序中,用,this,关键字引用当前窗体实例。,窗体是与用户交互的主要载体,是整个,Windows,应用程序的控件容器,其他界面元素(控件等)都可以放置在这个容器中。每向窗体中拖曳一个控件,设计器就为其添加一个字段的声明和初始化,通过组合不同的控件集、设置窗体的属性以及编写相应的事件、方法代码,可以满足用户对应用程序的要求。,下面我们就对窗体的一些重要属性、方法和事件进行介绍,之后会发现窗体是一个功能非常强大的对象。,5.3.1,类的继承,C#,允许一个类继承其他类的属性和方法。被继承的类称为父类(也可称其为基类),继承的类称为派生或子类。子类不仅可以继承基类的属性和方法,还可以根据需要定义新的属性和方法,增加新的功能。这样可使用户重用基类的代码,专注于子类的新代码,提高类的可重用性。继承的好处是能共享代码,继承后,父类的所有字段和方法都将存在于子类中,每一个子类都具有父类的非私有特性。,在有些语言中,子类可以从不止一个父类中派生,称为多继承。但在,C#,中,子类仅能派生于一个父类。,1,继承的定义,如果要声明一个类派生于另一个类,可以使用下面的语法:,修饰符,class,派生类名:基类名,/,派生类成员,修饰符:可选择,public,、,internal,、,abstract,、,sealed,、,new,、,private,、,protected,修饰符,使用时根据需要确定。,派生类名:必须是一个有效的,C#,标识符,一般采用,Pascal,大小写命名规则,单词的第一个字母大写。,基类名:被继承的类的名。,类体:用于定义派生类的成员。,继承意味着一个类隐藏了除了构造函数和析构函数外基类的所有成员。关于继承,需要注意以下几点。,继承是可传递的。如果,C,从,B,中派生,,B,又从,A,中派生,那么,C,不仅继承了,B,中声明的成员,同样也继承了,A,中的成员。,Object,类是所有类的基类。,派生类应当是对基类的扩展。派生类可以添加新的成员,但不能除去基类的成员的定义。,构造函数和析构函数不能被继承。除此以外的其他成员,不论对它们定义了怎样的访问方式,都能被继承。,派生类如果定义了与继承而来的成员同名的新成员,可以覆盖已继承的成员。但这并不是在派生类中删除了这些成员,而只是不能再访问这些成员。,类可以定义虚方法、虚属性以及虚索引指示器,它的派生类能够重载这些成员,从而实现类的多态性。,派生类的成员有两个来源:一个是从基类中继承来的;另一个是在派生类中重新定义的。,【,例,5-1】,下面的例子演示了继承的定义。,using System;,namespace Example5_1,/,定义基类,public class User,protected string name;/,姓名,保护成员,protected string passWord;/,用户密码,保护成员,private string role;/,身份,私有成员,public Person(string u_name,string u_ passWord,string u_role)/,构造函数,passWord=u_ passWord;,name=u_name;,role=u_role;,/,派生类定义,public class Employee:User,public string id;/,在派生类中填加用户的编号 公共成员,public Employee(string u_name,string u_ passWord,string u_role,string e_id):base(u_name,u_ passWord,u_role)/,构造函数,id=e_id;,class Class1,STAThread,static void Main(string args),/,用派类创建对象,Employee liMing=new Employee(liMing,123,经理,8888);,程序分析如下。,基类,User,定义了两个数据成员,一个构造函数,对基类不做重点分析,重点分析,Employee,派生类。,public class Employee:User,的含义是:,public,表示公共的;,class,是类关键字;,Employee,是派生类名称;“,:,:”表示派生于;,User,是基类名。,类体部分:增加一个公共成员,id,(表示雇员的编号),增加一个构造函数初始化对象的成员(注意派生类的构造函数的定义)。,在,Employee,派生类的类体部分看不到基类的代码,但是派生类,Employee,已经继承了基类,User,的成员,也就是说基类的成员也是派生类的成员。,2,定义派生类的构造函数,由于派生类是继承基类的成员,因此,在创建一个派生类对象时,不仅要对派生类中新增加的成员进行初始化,还要对基类中的数据进行初始化。,定义派生的类的构造函数的一般形式如下。,修饰符,派生类类名(参数表,1,):,base,(参数表,2,),/,派生类初始代码,由于派生类是继承基类的成员,因此,在创建一个派生类对象时,不仅要对派生类中新增加的成员进行初始化,还要对基类中的数据进行初始化。,定义派生的类的构造函数的一般形式如下。,修饰符,派生类类名(参数表,1,):,base,(参数表,2,),/,派生类初始代码,参数表,1,:指明参数的名称和类型,包含派生类新增参数及基类的参数,也可以无参数。,base,:基类关键字表示基类,关键字,base,为调用基类的成员提供了一个简便的方法,调用基类成员采用的格式为,base.,成员名。,参数表,2,:指明基类参数的名称无需类型说明,这些参数应包含在参数表,1,中。,派生类初始代码:由语句组成,用于所要执行的操作。,【,例,5-2】,下面的示例说明了派生类的构造函数定义。,public class MyRole /,基类,MyRole,private int x;,private int y;,public MyRole(int xx,int yy)/,基类构造函数,x=xx;,y=yy;,public class MyDerived:MyRole /,派生,MyDerived,private int z;,public MyDerived(int xx,int yy,int zz):base(xx,yy)/,派生类构造函数,z=zz;,在派生类的构造函数,MyDerived,(,int xx,int yy,int zz,)中,用参数,xx,、,yy,调用基类的构造函数初始化基类的数据,而用参数,zz,初始化派生类中的数据成员。,派生类的构造函数有如下特点。,(,1,)派生类的构造函数可以重载,以调用基类的不同构造函数。,(,2,)派生类的构造函数体内一般只初始化派生类的数据函数,而不直接初始化基类成员,即使能直接访问它们。,注意:,在创建对象时,调用派生类的构造函数,MyDerived,(,int xx,int yy,int zz,),不必带有,:base,(,xx,yy,),,MyDerived myTest=new MyDerived,(,1,2,3),。,3,使用,new,修饰符隐藏基类成员,使用,new,修饰符可以显式隐藏从基类继承的成员,这样在使用派生类的对象的方法时,调用的是派生类重写的与派生类相同的新方法。若要隐藏继承的成员,使用相同名称在派生类中声明该成员,并用,new,修饰符修饰它即可。看下面的类。,public class MyBase,public int x;,public void MyVoke(),Console.WriteLine(This is Mybase”);,在派生类中用,MyVoke,名称声明成员会隐藏基类中的,MyVoke,方法。,public class MyDerived:MyBase,new public void MyVoke(),Console.WriteLine(This is MyDerived”);,注意:,在同一成员上同时使用,new,和,override,是错误的。,要调用隐藏的基类中的方法用下列方法:,base.,基类隐藏的方法。,4,密封类和密封方法,C#,允许把类和方法声明为,sealed,。对于类来说,这表示不能继承该类;对于方法来说,这表示不能重写该方法。,sealed class FinalClass,/,代码,class DerivedClass:FinalClass /,这将给出编译错误,因密封类不能派生,/,代码,在把类或方法标记为,sealed,时,最可能的情形是:如果要对库、类或自己编写的其他类进行操作,则重写某些功能会导致错误。也可以因商业原因把类或方法标记为,sealed,,以防第三方以违反注册协议的方式扩展该类。但一般情况下,在把类或方法标记为,sealed,时要小心,因为这么做会严重限制它的使用。即使不希望能继承一个类或重写类的某个成员,仍有可能在将来的某个时刻,有人会遇到我们没有预料到的情形。,.NET,基类库大量使用了密封类,使希望从这些类中派生出自己的类的第三方开发人员无法访问这些类。例如,string,就是一个密封类。,把方法声明为,sealed,也可以实现类似的目的,但很少这么做。,5,抽象类和抽象函数,C#,允许把类和函数声明为,abstract,,抽象类不能实例化,而抽象函数没有执行代码,函数括号后跟一个分号,必须在非抽象的派生类中重写。如果类包含抽象函数,该类也是抽象的,必须声明为抽象的。,abstract class Building,public abstract decimal CalculateHeatingCost();/abstract method,5.3.2 Form,类的常用属性、方法和事件,1,Form,类的常用属性,属性就是一组设置值,用于描述某类对象(如窗体,Form,)的外观、形状、大小、位置等。对于窗体(,Form,类),许多属性可以在设计时用属性窗口(如图,5-8,所示)来设置,几乎所有属性都可以在运行过程中通过代码动态设置。,下面我们介绍窗体的一些常用的属性。,注意:,当在属性窗口选中某属性时,在属性窗口的底部窗格就会显示该属性的简要描述,。,Text,属性。,Text,属性主要用来设置窗体标题栏中显示的文本。它可以通过属性窗口来设置(如图,5-9,中设置为“窗体的标题”),也可以在窗体运行时为,Text,属性设置属性值,代码如下。,this.Text=”,窗体的标题”;,可以把以上代码放在窗体的构造函数(该过程创建窗体的对象实例,具体参见“构造函数”)中或者窗体的,Load,事件中。运行效果如图,5-9,所示。,FormBorderStyle,属性。,FormBorderStyle,属性用来指示窗体的边框和标题栏的外观和行为,如图,5-10,所示。,在,FormBorderStyle,属性窗口中有,7,个枚举值,它们的具体含义如表,5-1,所示。,枚 举 常 量,窗口的特性,Fixed3D,固定的三维边框,Fixed Dialog,固定的对话框样式的粗边框,Fixed Single,固定的单行边框,续表,枚 举 常 量,窗口的特性,FixedToolWindow,不可调整大小的工具窗口边框,None,无边框,Sizable,可调整大小的边框,SizableToolWindow,可调整大小的工具窗口边框,Name,属性。,图,511 Name,属性的可视化设置,该属性为,String,类型的值,用于获取或设置窗体的名称,该名称主要用于在程序中引用该窗体对象。我们知道,,VS,默认给新建的窗体命名为,Form1,、,Form2,等。我们可以修改窗体的,Name,属性,一般在设计阶段即应为所有的窗体拟定合适的名称,并在窗体新建的第一时间就将,Name,属性改定,以免中途改名带来种种麻烦,如图,5-11,所示。,除了以上几个常用属性外,窗体属性(例如窗体图标、背景颜色、显示方式等)还有很多,这里就不一一介绍了,请读者在实验时自行练习。,2,Form,类的常用方法,下面是一些最常用的窗体的方法及其用途描述。,Show,:向用户显示窗体控件。,ShowDialog,:将窗体显示为模式对话框。,Close,:关闭窗体。,Hide,:对用户隐藏窗体控件。,Form,类的常用事件,在,.NET,开发环境下设计窗体时,有以下一些,Form,类的常用事件(含顺序)。,Init,事件。,初始化窗体时触发的事件。初始化是窗体生存周期的第一步,在该事件的生存周期内不应该访问其他控件,因为这些控件可能尚未生成。,Load,事件。,在第一次显示窗体前触发,Load,事件。,Activated,事件。,当使用代码激活或用户激活窗体时,就会触发,Activated,事件。,Mouse,事件:,MouseMove/Enter/Hover/Down/Up/Leave/Wheel,等事件。,这些都是与鼠标操作有关的事件,分别在鼠标指针移到窗体上、鼠标指针进入窗体、鼠标指针在窗体内保持静止、鼠标键按下、鼠标键释放、鼠标移出窗体、移动鼠标滚轮时发生。,键盘事件:,KeyDown/Press/Up,等(非字符键不引发,KeyPress,事件)。,在窗体上按下键或释放键时发生。,Closing,事件。,在关闭窗体时发生。,Closed,事件。,关闭窗体后发生。,5.3.3,两个,Form,之间的数据传递,上面一节介绍了,Form,窗体类的主要属性、方法和事件,下面我们来看一下如何在一个窗体上单击一个按钮以显示另一个窗体。,在建立好了项目之后,系统会自动新建一个窗体,Fom1,,我们可以在上面添加控件、编写程序。当我们的应用程序需要多个窗体时,该如何添加第,2,个窗体?如何控制第,2,个窗体呢?,设计一个,Windows,窗体程序,首先要建立,Windows,应用程序项目,分析本项目需要哪些数据和控件,然后进行设计窗体程序的“三部曲”工作:固定工具箱,在窗体上组织控件并布局;隐藏工具箱、显示属性面板,设计各控件的各属性初始值;指定控件的事件委托,编写事件委托函数及相关函数代码。上述三步可以简单概括为布置界面、设置属性、编写事件委托函数。,【,例,5-3,】,两个,Form,的窗体程序小案例。,第一步启动,C#,应用程序,新建一个项目,进入编辑环境,这样系统会自动给我们新建一个窗体,Fom1,,如图,5-12,所示。,从“项目”菜单中选择“添加,Windows,窗体”项,打开添加新项界面,选择“,Windows,窗体”。在名称栏内,默认的名称是,Form2,,可以根据需要来修改它的名称。修改好后单击“添加”按钮,这样设计窗口内就有了第,2,个窗体,如图,5-13,所示。,选中,Form2,窗体,从左边的“工具箱”中拖曳控件,并为所拖曳的控件设置属性,编写相关的事件代码。如拖曳一个,Button,控件,默认为“,button1”,,在右边的“属性”面板中,将,button1,的“,Text”,属性改为“显示窗体,Form2”,。然后,双击“,button1”,,切换到代码页,系统自动生成如下语句。,private void button1_Click(object sender,EventArgs e),编写,button1,的,Click,事件代码如下。,private void button1_Click(object sender,EventArgs e),Form2 myForm=new Form2();,myForm.Show();,这样就可以了。,当程序运行后,首先出现的是,Form1,窗口,其上有一个按钮,单击该按钮后,出现了,Form2,窗口,如图,5-14,所示。,5.3.4,演练,1,实验题目,Form,类。,2,实验目的,掌握利用,Form,对象的基本属性控制,Form,的外观。,了解利用,Form,对象的基本方法。,3,实验内容,(,1,)建立一个,Windows,应用程序项目,包含,Form1,和,Form2,两个窗体。,Form1,中有一个按钮“显示,Form2”,,要求单击该按钮时才显示,Form2,;,Form2,上也有一个按钮“关闭,Form1”,,单击这个按钮,将关闭,Form1,,也就关闭了整个应用程序。,(,2,)选做:在(,1,)基础上,当单击,Form1,的标题栏的关闭按钮时,显示,Form2,,隐藏,Form1,。,4,实验步骤,由读者写出。,5,实验总结,由读者写出,。,5.3.5,自测,1,选择题,(,1,)如果将窗体的,FormBorderStyle,属性设置为,None,,则,。,a,窗体没有边框并不可调整大小。,b,窗体没有边框但可以调整大小。,c,窗体有边框但不可调整大小。,d,窗体是透明的。,(,2,)如果将窗体设置为透明的,则,。,a,要将窗体的,FormBorderStyle,属性设置为,None,。,b,要将,Locked,属性设置为,True,。,c,要将,Opacity,属性设置小于,100%,。,d,要将,Enable,属性设置为,True,。,(,3,)下面描述错误的是,。,a,窗体也是控件。,b,窗体也是类。,c,控件是从窗体继承来的。,d,窗体的父类是控件类。,(,4,)要使窗体刚运行时,显示在屏幕的中央,应设置窗体的,属性。,a,WindowsState,b,StartPostion,c,CenterScreen,d,CenterParenr,基本知识,3,:基本控件,Visual Studio.NET,提供了很多,Windows,窗体控件,而且每个控件都有大量的属性和事件。这些控件及其属性和事件使得我们可以快速地设计出内容丰富的,Windows,窗体。本节将介绍几个最基本的控件。,5.4.1 Label,类控件,标签(,Label,)控件是一种最简单的控件,通常用于需要静态文字提示的场合,是最常用的控件之一。,Label,控件还可用于显示应用程序运行时的信息,也可用于为窗体添加描述性文字,以便为用户提供帮助信息。在应用,Label,控件前,我们先来了解一下,Label,控件的几个主要属性。,1,控件外观,Text,属性。,Label,控件所显示的提示性文字保存在,Text,属性中。它的设置方法为,首先从“工具箱”中的“所有,Windows,窗体”中拖曳一个,Label,控件放在一个窗体中,选中所生成的,Label1,,再在其属性面板中把,Text,属性改为所要显示的文本即可,如图,5-15,所示。,运行效果如图,5-16,所示。,注意:,TextAlign,属性只有在,Label,控件的,AutoSize,属性值为,False,时有效,TextAlign,属性。为了设置,Label,控件中文字的排列方式,,Label,控件还定义了一个,TextAlign,属性。,该属性同样采用了可视化设置,如图,5-17,所示,用户可以很方便地设置,Label,控件中文字的排列方式。,Image,属性。,为了美化,Label,控件的显示效果,还可以通过,Image,属性为,Label,控件指定一幅图片在为背景。可以作为,Label,控件背景的图片类型包括,jpg,、,bmp,、,gif,、,png,等,操作如图,5-18,所示,。,说明:,VS2008,提供的一些常用的图标图片存放的默认安装位置为“,C:Program FilesMicrosoft Visual Studio 9.0Common7VS2008ImageLibrary”,路径下,ForeColor,和,BackColor,属性。分别表示文字颜色(前景色)和背景色,属性类型都为,Color,结构类型,可以进行可视化设置。通过,Label,控件的,BackColor,属性可以设置标签的背景颜色。在属性面板中,系统提供了几十种颜色可供选择。另外还可以通过程序代码来修改,BackColor,属性,例如:,Label1.BackColor=Color.Transparent,;是将标签设为透明。,Font,属性。表示文本的字体,包含丰富的字体设置,属性类型是,System.Drawing.Font,类,可以通过可视化的方法进行设置,如图,5-19,所示。,单击,Font,属性后面的“省略号”,即可弹出字体对话框,如图,5-20,所示。,2,控件布局属性,AutoSize,属性。表示控件大小是否自动适应文字内容,为,bool,类型,属性值默认为,True,。,Left,、,Top,、,Width,、,Height,属性和,Location,、,Size,属性。表示控件在父容器中的定位和尺寸,其中,Left,、,Top,表示定位,在属性面板中显示为,Location,属性,,Width,和,Height,表示尺寸,在属性面板中显示为,Size,属性。,Left,、,Top,、,Width,、,Height,属性是,int,类型,,Location,是,Point,结构类型,,Size,是,Size,结构类型。,3,其他,Enabled,属性。,表示该控件是否可供用户使用,为,bool,类型,默认为,True,(所有控件都有此属性)。若设置此属性值为,False,,则该控件在运行时状态为灰色显示(即为不可用)。,5.4.2 TextBox,类控件,文本框(,TextBox,)用于获取用户输入或显示的文本,是最常用的控件之一。在应用该控件前,我们先介绍一些他的常用属性和方法事件。,1,常用属性,Text,属性。,保存用户通过文本框输入的信息,可以在界面设计时指定一个初始值,这样在程序运行时,该初始值将自动显示在该文本框中。在程序中可以通过读取该属性的值来获取用户的输入信息。,ReadOnly,属性。,指定文本框是否为只读控件,默认值为,False,。默认情况下,文本框中的内容可以被编辑。如果将,ReadOnly,属性的值设为,True,后,则该控件不可用。,MultiLine,属性。,控制编辑控件的文本是否能够跨越多行,默认值为,False,。在默认的情况下,文本框可以最多输入,2048,个字符。如果将,MultiLine,属性的值设为,True,,则最多可以容纳,32KB,的文本。同样,在多行输入的情况下,也可以通过读取该属性的值来获取用户的输入信息。,TabIndex/TabStop,属性。,按,Tab,键时的焦点顺序,要想哪个,TextBox,获得焦点,把它的,TabStop,属性设为,True,即可。,2,常用事件,【,例,5-4,】,文本框,TextChanged,事件的应用演示。,其大体步骤为,首先从“工具箱”中的“所有,Windows,窗体”中拖曳一个,TextBox,控件放在一个窗体中,双击所生成的,TextBox 1,,进入代码编辑文件,输入如下代码。,private void textBox1_TextChanged(object sender,System.EventArgs e),MessageBox.Show(,文本已改变,请注意存盘!,);,程序运行后,如果我们对文本框中的文本作任何改动,都会弹出一个对话框,如图,5-21,所示。,说明:,上例是一个典型的选取事件不恰当的反例,应该用文本框的,Leave,事件完成此功能,请读者通过此题进一步体会事件发生时机的含义。,5.4.3 Button,类控件,按钮(,Button,)控件允许用户通过单击来执行操作。当该按钮被单击后,它看起来像是被按下然后释放。它是最常用的控件之一。在应用该控件前,我们先介绍一些它的常用属性和方法事件。,1,常用属性,Text,属性。,Button,控件所显示的提示性的文字保存在,Text,属性中。它的设置方法为,首先从“工具箱”中的“所有,Windows,窗体”中拖曳一个,Button,控件放在一个窗体中,选中所生成的,button1,,再在其属性面板中把,Text,属性改为所要显示的文本即可。,FlatStyle,属性。,C#,允许改变按钮的外观,一般设置,FlatStyle,属性的不同值,就可以改变它的平面显示风格,该属性可以取如下的值。,Flat,:按钮总是以平面方式显示。,Popup,:鼠标移动到按钮上时,以三维方式显示按钮,其他情况同,Flat,。,Standard,:按钮总是以三维方式显示。,2,常用事件,Click,事件。,对于,Button,控件,我们常用的事件是,Click,事件,是单击按钮时所引发的处理操作。,【,例,5-5,】,按钮,Click,事件的应用演示,。,下面我们通过一个小例子,来演示一下,Click,事件的应用。其大体步骤为,首先从“工具箱”中的“所有,Windows,窗体”中拖曳一个,Button,控件放在一个窗体中,如图,5-22,所示,,双击所生成的,button1,,进入代码编辑区域,输入如下代码。,private void button1_Click(object sender,System.EventArgs e),MessageBox.Show(,你单击了一下按钮哦!,);,程序运行结果如图,5-23,所示:,3,其他事件,对于,Button,控件,我们还经常用,KeyDown,、,KeyPress,、,KeyUp,事件来响应键盘的一些操作,用,MouseDown,、,MouseEnter,、,MouseHover,、,MouseLeave,、,MouseMove,事件来响应鼠标的一些操作。,Button,控件还有很多事件,有兴趣的读者
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服