C 初步──电子时钟程序_第1页
C 初步──电子时钟程序_第2页
C 初步──电子时钟程序_第3页
C 初步──电子时钟程序_第4页
C 初步──电子时钟程序_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#初步电子时钟程序第2章任务2.1 了解电子时钟程序的效果本章任务1任务2.2 学习类和对象2任务2.3 编写电子时钟程序3任务2.4 学习窗体对象4任务2.5 学习注释5任务2.6 学习MessageBox对象6任务2.7 学习DateTime类型7总结上机情况周四上机需要掌握环境变量的设置、命令提示符程序的起始位置,基本都能会用输入代码的过程中,出现一些问题:多加空格、不注意大小写,字符输入错误等,导致编译出现错误提示。VS2010界面的代码输入,很多同学无从下手。整理成word文档需要注意截图问题:如何截图、如何处理图片、裁剪、添加文字、添加题注。周五上机内容中,程序中需要修改一个设置

2、,课本上没有提示,修改之后就可以调试成功了。C#控制台应用程序的结构导入其他系统预定义元素部分命名空间类主方法完成方法中的C#代码C#控制台应用程序的结构导入其他系统预定义元素命名空间类方法中的C#代码主方法1.2.3 C#程序代码的基本书写规则1. 程序代码区分字母大小写2. 语句书写规则每个语句都必须用分号结尾允许在同一个代码行上书写多个语句块结构,每个代码块用 来界定语句中作为语法成分的标点符号必须是西文标点采用嵌套缩进格式C#程序代码的基本书写规则3. 注释信息单行注释“/”作为引导符多行注释“/*”开始,“*/”结束XML注释在一个代码行上,“/”之后的内容均为注释信息,编译时可提取

3、为XML文本任务2.1 了解电子时钟程序的效果关于c#语言C#是一种相当新的编程语言,C#的重要性体现在以下两个方面: 它是专门为与Microsoft的.NET Framework一起使用而设计的。(.NET Framework是一个功能非常丰富的平台,可开发、部署和执行分布式应用程序)。 它是一种基于现代面向对象设计方法的语言,在设计它时,Microsoft还吸取了其他类似语言的经验,这些语言是近20年来面向对象规则得到广泛应用后才开发出来的。有一个很重要的问题要弄明白:C#就其本身而言只是一种语言,尽管它是用于生成面向.NET环境的代码,但它本身不是.NET的一部分。.NET支持的一些特性

4、,C#并不支持。而C#语言支持的另一些特性,.NET却不支持(例如运算符重载)!.NET Framework的核心是其运行库的执行环境,称为公共语言运行库(CLR)或.NET运行库。通常将在CLR的控制下运行的代码称为托管代码(managed code)。但是,在CLR执行编写好的源代码之前,需要编译它们(在C#中或其他语言中)。在.NET中,编译分为两个阶段:(1) 把源代码编译为Microsoft中间语言(IL)。(2) CLR把IL编译为平台专用的代码。这两个阶段的编译过程非常重要,因为Microsoft中间语言(托管代码)是提供.NET的许多优点的关键。任务2.2 学习类和对象类和对象

5、的概念C#是一种完全面向对象的编程语言,对象可以被视为一个单元的代码和数据的组合,是类的一个实例。对象(object),从概念层面讲,就是某种事物的抽象(功能)。抽象原则包括数据抽象和过程抽象两个方面:数据抽象就是定义对象的属性;过程抽象就是定义对象的操作。对象封装了数据和代码(数据和程序)。封装、继承和多态所谓封装,也就是把客观事物抽象并封装成对象,即将数据成员、属性、方法和事件等集合在一个整体内。通过访问控制,还可以隐藏内部成员,只允许可信的对象访问或操作自己的部分数据或方法继承是允许使用现有类的功能,并在无需重新改写原来的类的情况下,对这些功能进行扩展。继承可以避免代码复制和相关的代码维

6、护等问题继承的过程,就是从一般到特殊的过程。被继承的类称为“基类(base class)”、“父类”或“超类(super class)”,通过继承创建的新类称为“子类(subclass)”或“派生类(derived class)”C#语言一个子类只能有一个基类(单一继承),但允许实现多个接口多态性(polymorphism)是指同样的消息被不同类型的对象接收时导致完全不同的行为。多态性允许每个对象以自己的方式去响应共同的消息,从而允许用户以更明确的方式建立通用软件,提高软件开发的可维护性例如,假设设计了一个绘图软件,所有的图形(Square、Circle等)都继承于基类Shape,每种图形有自

7、己特定的绘制方法(draw)的实现。如果要显示画面的所有图形,则可以创建一个基类Shape的集合,其元素分别指向各子类对象,然后循环调用父类类型对象的绘制方法(draw),实际绘制根据当前赋值给它的子对象调用各自的绘制方法(draw),这就是多态性。如果要扩展软件的功能,例如增加图形Eclipse,则只需要增加新的子类,并实现其绘制方法(draw)即可类和对象在.NET中一切皆为对象,C#中的的每个对象都由一个“类”来定义的。类描述对象的字段、属性、方法和事件,对象是类的实例,我们可以使用类创建所需的任何数量的对象。类(class)是C#语言的核心,C#的一切类型都是类,所有的语句都必须位于类

8、内类是一个数据结构,类定义数据类型的数据(字段)和行为(方法和其他函数成员)。对象是基于类的具体实体,有时称为类的实例(instance)类与对象的关系类似于车型设计和具体的车类的声明特性类修饰符partialclass 类名 类型形参 : 基类或接口类型形参约束 类体;创建和使用对象类名 对象名 = new 类名(参数表); 创建类的对象、创建类的实例、实例化类等说法是等价的,都说明以类为模板生成了一个对象的操作访问修饰符访问修饰符用来控制所修饰成员的可访问域,以使类或者类的成员在不同的范围内具有不同的可见性,从而实现数据和代码的隐藏C#中使用如下访问修饰符:public(公共)、priva

9、te(私有)、internal(内部)、protected(受保护)访问修饰符意义public访问不受限制protected访问仅限于此类或从此类派生的类internal访问仅限于此程序(类所在的程序内,即同一个编译单元:dll或exe中)protected internalprotected或者internal,即访问仅限于此程序或从此类派生的类private访问仅限于此类嵌套类类内声明的类称为内部类(internal class)或者嵌套类(nested class)。在编译单元或命名空间内声明的类称为顶级类,也称包含类或者非嵌套类型(non-nested class)class Cont

10、ainer class Nested Nested() 分部类分部类型(partial type)可以将类(以及结构和接口)划分为多个部分,存储在不同的源文件中,以便于开发和维护分部类主要用于2种场合:当类的源码十分庞大或需要不同程序员同时进行维护时,使用分部类可以灵活地满足这种要求;使用继承开发工具源代码生成器时,将计算机生成的类型部分和用户编写的类型部分互相分开,以便更容易地扩充工具生成的代码使用类修饰符partial,用来实现通过多个部分来定义一个类类的成员类的主要成员包括两种类型,即描述状态的数据成员和描述操作的函数成员。类的成员或者是静态成员(static member),或者是实例

11、成员 (instance member)类所能包含的成员种类:成员说明常量与类关联的常量值字段类的变量方法类可执行的计算和操作属性定义一些命名特性以及与读取和写入这些特性相关的操作索引器与以数组方式索引类的实例相关联的操作事件可由类生成的通知运算符类所支持的转换和表达式运算符构造函数初始化类的实例或类本身所需的操作析构函数在永久丢弃类的实例之前执行的操作类型类所声明的嵌套类型数据成员数据成员用于描述类的状态,包括:字段、常量和事件数据成员可以是静态数据,与整个类相关;或实例数据,类的每个实例都有它自己的数据副本字段是与类相关的变量。常量是与类相关的常量。使用const关键字来声明常量。事件是在

12、发生某些行为(例如改变类的字段或属性,或者进行了某种形式的用户交互操作)时由类生成的通知,它可以让对象通知调用程序函数成员函数成员用于提供操作类中数据的某些功能,包括方法、属性、构造函数和析构函数、运算符以及索引器方法是与某个类相关的函数,它们可以是实例方法,也可以是静态方法。实例方法处理类的某个实例,静态方法提供了更一般的功能,不需要实例化一个类就可以直接调用(例如Console.WriteLine())属性(property)是字段的自然扩展。属性和字段都是命名的成员,都具有相关的类型,而且用于访问字段和属性的语法也相同。字段表示存储位置,而属性则通过访问器(accessor)指定在它们的

13、值被读取或写入时需执行的语句(一般用于读取或写入类的私有字段)。构造函数是名称与类名相同的特殊方法,当类被实例化时,首先就会执行构造函数。析构函数也是一种特殊的方法,其名称由类名前加上符号“”所构成。当类的实例无效时,这个函数就会被执行。索引器与属性相似,其目的是使类的实例可按与数组相同的(语法)方式进行索引访问。运算符用于定义类的实例的运算操作,一般用于对预定义的运算符进行重载(重新定义运算规则)静态成员和实例成员静态成员属于类,被这个类的所有实例所共享。实例成员属于对象(类的实例),每一个对象都有实例成员的不同副本。常量会隐式地声明为静态成员,其他没有用static修饰的成员都是实例成员或

14、者称为非静态成员静态成员的特征静态成员必须通过类名来引用。例System.Console.WriteLine(Hello, World!)或者Console.WriteLine(Hello, World!)。一个静态字段共享同一个存储位置。创建了一个类的多个实例时,其静态字段在内存中占同一存储区域,即永远只有一个副本。静态函数成员(方法、属性、事件、运算符或构造函数)属于类的成员,故在其代码体内不能直接引用实例成员,否则将产生编译错误实例成员的特征实例成员必须通过对象实例来引用。实例字段属于类的实例。每当创建一个类的实例时,都在内存中为该实例字段开辟一块存储区域。类的每个实例分别包含各实例字段

15、的单独副本。实例函数成员(方法、属性、索引器、实例构造函数或析构函数)作用于类的给定实例,故在其代码体内既可以使用实例成员,也可以直接引用类的静态成员字段的声明和访问声明:字段修饰符 类型 字段名 = 初始化;访问:对象.字段名;静态字段和实例字段使用 static 修饰符声明的字段定义了一个静态字段(static field)。一个静态字段只标识一个存储位置。静态字段不是特定实例的一部分,而是所有实例之间共享一个副本,又称为静态变量(static variable)不使用 static 修饰符声明的字段定义了一个实例字段(instance field)。类的每个实例都包含了该类的所有实例字段

16、的一个单独副本。实例字段属于特定的实例,又称为实例变量(instance variable)静态字段的声明:修饰符 static 类型 字段名 = 初始化;访问类的静态字段:类名.字段名;常量字段常量(constant)是在编译时设置其值并且永远不能更改其值的字段。常量是表示常量值的类成员,常量的值在编译时计算常量的声明:修饰符 const 类型 字段名 = 初始化;常量是静态成员,但声明常量时既不要求也不允许使用 static 修饰符只读字段只读字段只能在声明字段时赋值或在类的构造函数内被赋值,在其他位置,只读字段的值不能更改只读字段的声明:修饰符 readonly 类型 字段名 = 初始化

17、;只读字段与常量的区别常量只能在声明时赋值,常量的值在编译时就已经确定,在程序中不能改变只读字段可以在声明时或者在构造函数内赋值,只读字段的值是在运行时确定的常量的类型只能是下列类型之一:sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string或者枚举类型;而只读变量可以是任何类型可变字段可变字段(volatilevltail field)不受编译器优化的限制,可以由多个同时执行的线程修改,可以确保该字段在任何时间呈现的都是最新的值可变字段的声明:修饰符 volatile 类型 字段名 =

18、 初始化;方法方法的声明:方法修饰符 返回值类型 方法名 (形参列表) 方法体;方法的调用方法类似于字段的访问:对象.方法名(实参列表);参数的传递方法的声明可以包含一个形参列表方法调用时则通过传递实参列表有四种类型的参数值形参(value parameter),声明时不带任何修饰符引用形参(reference parameter),用 ref 修饰符声明输出形参(output parameter),用 out 修饰符声明形参数组(parameter array),用 params 修饰符声明1值形参声明时不带修饰符的形参是值形参,用于输入参数的传递值形参对应于方法声明空间的局部变量,其初始值

19、为方法调用所提供的相应实参(即创建一个新的存储副本),故对应实参必须是一个表达式,且类型可以隐式转换为形参的类型。在方法体代码中,可以将新值赋给值形参。但赋值只影响方法声明空间的局部存储位置,对值形参的修改不会影响在方法调用时由调用方给出的实参2引用形参用 ref 修饰符声明的形参是引用形参,用于输入和输出参数的传递为引用参数传递的实参必须是变量。引用形参并不创建新的存储位置,其存储位置就是方法调用中作为实参给出的那个变量所表示的存储位置。故当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。方法调用中的对应实参必须为与形参类型相同的变量,且变量在作为引用形参传递之前,必须先

20、明确赋值3输出形参用 out 修饰符声明的形参是输出形参,用于输出参数的传递与引用形参类似,输出形参并不创建新的存储位置,其存储位置就是方法调用中作为实参给出的那个变量所表示的存储位置。事实上,输出形参主要用于当控制权传递回调用方法时,把输出值传递给相应的变量方法调用中的对应实参必须为与形参类型相同的变量,但变量在作为输出形参传递之前,不需要明确赋值,但是在将变量作为输出形参传递的调用之后,必须明确赋值4形参数组用 params 修饰符声明的形参是形参数组,允许向方法传递可变数量的实参如果形参表包含一个形参数组,则该形参数组必须位于该列表的最后,且必须是一维数组类型。例如,类型 string

21、和 string 可用作形参数组的类型,但是类型 string, 不能形参数组主要用于传递可变数量的参数params 修饰符不能与 ref 和 out 修饰符组合起来使用方法的重载当定义两种或多种具有相同名称的方法时,就称作重载(overloading)静态方法和实例方法使用 static 修饰符声明的方法为静态方法(static method)。静态方法不对特定实例进行操作,并且只能直接访问静态成员。在静态方法中引用 this 会导致编译时错误。不使用 static 修饰符声明的方法为实例方法(instance method)。实例方法对类的某个给定的实例进行操作,并且能够访问静态成员和实例

22、成员。在调用实例方法的实例上,可以通过 this 显式地访问该实例。静态方法通过类来访问;实例方法通过类的实例来访问静态方法的声明:方法修饰符 static 返回值类型 方法名 (形参列表) 方法体;访问类的静态方法:类名.方法名 (实参列表);分部方法使用partial修饰符定义分部方法(partial method)分部方法在分部类的一个部分中声明分部方法定义,而在分部类的另一个部分中声明分部方法实现这两个声明必须具有相同的修饰符、类型、方法名、形参数列表外部方法当方法声明包含 extern 修饰符时,称该方法为外部方法(external method)。外部方法是在外部实现的(通常为dl

23、l库函数),故外部方法声明不提供任何实际实现,其方法体只由一个分号组成。外部方法不可以是泛型。extern 修饰符通常与 DllImport特性一起使用,以引用由 DLL(动态链接库)实现的外部函数。当外部方法包含 DllImport特性时,该方法声明必须同时包含一个 static 修饰符属性的声明和访问属性的声明:属性修饰符 类型 属性名 get get访问器体 set set访问器体 ;属性的访问:对象.属性名C#中的属性通过get和set访问器来对属性的值进行读写静态属性和实例属性当属性声明包含 static 修饰符时,称该属性为静态属性(static property);当不存在 st

24、atic 修饰符时,称该属性为实例属性(instance property) 静态属性不与特定实例相关联,因此在静态属性的访问器内引用 this 会导致编译时错误。实例属性与类的一个给定实例相关联,并且该实例可以在属性的访问器内作为 this来访问静态属性的声明:访问类的静态属性:类名.属性名;属性修饰符 static类型 属性名 get get访问器体 set set访问器体 ;自动实现的属性自动实现的属性声明的基本形式如下:属性修饰符 类型 属性名get;set;当声明自动实现的属性时,编译器将创建一个私有的匿名后备字段,该字段只能通过属性的 get 和 set 访问器进行访问索引器的声明

25、和访问索引器(indexer)允许对象像数组一样进行索引,并通过索引来操作对象的元素索引器与属性类似。索引器又被称为带参数的属性索引器声明的基本形式为:修饰符 类型 this 参数表 get get访问器体 set set访问器体 ;索引的声明与属性的声明基本相同。不同之处在于:索引器的名称固定为关键字this,且必须指定索引的参数表索引器的访问方式:对象索引参数运算符重载运算符重载声明的基本形式如下:修饰符 static类型 operator 运算符(参数表) 转换代码体;构造函数和析构函数实例构造函数(instance constructor)用于执行类的实例的初始化工作。创建对象时,根据

26、传入的参数列表,将调用相应的构造函数。每个类都有构造函数,如果没有显式声明构造函数,则编译器会自动生成一个默认的构造函数(无参数),默认构造函数实例化对象,并将未赋初值的字段设置为默认值(例如,宇符串为空,数值数据为0,bool为False)构造函数构造函数声明的基本形式如下:修饰符 类名 (参数列表) 构造函数方法体;构造函数具有下列特征构造函数的名称与类名相同可以创建多个构造函数,以根据不同的参数列表进行相应的初始化构造函数不能声明返回类型(也不能使用void),也不能返回值一般构造函数总是public 类型的。private 类型的构造函数表明类不能被实例化,通常用于只含有静态成员的类创

27、建对象时,自动调用对应的构造函数,不能显式调用构造函数在构造函数中不要做对类的实例进行初始化以外的事情私有构造函数如果构造函数被声明为private类型,则这个构造函数不能从类外访问,因此也不能用来在类外创建对象私有构造函数一般用于只包含静态成员的类。通过添加一个空的私有实例构造函数,可以阻止其实例化,以确保程序只能通过类名来引用所有的静态成员静态构造函数静态构造函数(static constructor)用于实现初始化类(而不是初始化实例或对象)所需的操作。静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。类

28、的静态构造函数在给定程序中至多执行一次。静态构造函数声明的基本形式如下:static 类名 () 构造函数方法体;静态构造函数既没有访问修饰符,也没有参数在创建第一个实例或引用任何静态成员之前,自动调用静态构造函数析构函数析构函数(destructor)用于实现销毁类的实例所需的操作,如释放对象占用的非托管资源(例如:打开的文件、网络连接等)析构函数声明的基本形式如下:类名() 析构函数方法体;析构函数具有下列特征:析构函数的名称由类名前面加上“”字符构成析构函数既没有修饰符,没有返回值类型(甚至也不能使用void),也没有参数无法继承或重载析构函数,一个类只能有一个析构函数不能显式调用析构函

29、数可以认为析构函数是构造函数的相反操作析构函数隐式地调用对象基类的Finalize(终结)方法,即对继承链递归调用 Finalize 方法。故不应使用空析构函数任务2.2 学习类和对象属性、方法和事件属性是对象的特征,不同的对象有不同的特征。属性控制着对象的外观和行为。属性的设置可以通过属性窗口直接设置编写代码来设置编写代码设置格式为:对象名.属性名称= 属性值;任务2.2 学习类和对象属性、方法和事件所谓方法,就是通过完成特定任务而对对象进行的操作。使用对象方法的语句格式为:对象名.方法( );为了区分属性和方法,C#要求方法名的后面必须加一对括号。任务2.2 学习类和对象属性、方法和事件C

30、#采用事件驱动机制,所谓事件,就是对象发送的消息,表示特定操作的发生。操作可能是由用户交互(例如鼠标单击或键盘按下)引起的,也可能是由某些其他的程序逻辑触发的(如启动窗体)。在.NET Framework中,已经为窗体和控件定义了大量的事件,我们只要编写相应的事件处理程序,告诉程序,当某个事件发生时,应该如何处理就可以了。任务2.2 学习类和对象属性、方法和事件在C#中,编写事件处理程序的步骤如下: (1)单击选择要编写事件处理程序的窗体、控件、组件等对象。(2)在“属性窗口”中单击事件按钮。(3)单击要编写处理程序的事件。(4)输入名称,并回车(或双击左侧事件名称)。(5)在VS自动打开的代

31、码编辑器中编写处理代码。图2.3 事件选项卡事件按钮在此处输入程序名称任务2.3 编写电子时钟程序创建新的Windows应用程序Windows应用程序结构编写电子时钟应用程序运行程序保存和打开“电子时钟”程序(1)启动VS集成开发环境(2)在“起始页”页面上,单击“新建项目”链接,打开“新建项目”对话框。(3)在“新建项目”对话框中,选中“项目类型”列表中的“Visaul C#Windows”,然后在“模板”列表中选中“Windows窗体应用程序”。(4)在“名称”文本框中,输入项目的名称 “Clock”,然后在“位置”文本框中指定程序的位置。单击此处运行程序任务2.3 编写电子时钟程序创建新

32、的Windows应用程序Windows应用程序结构编写电子时钟应用程序运行程序保存和打开“电子时钟”程序1解决方案文件存储文件的扩展名是.sln,在一个解决方案中可以包含多个项目,本例中名为Clock.sln。2项目文件解决方案下方的Clock文件被称为项目文件,包含了项目一些基本信息,它的扩展名是.csproj。3窗体文件Form1.cs文件就是窗体文件,我们对窗体编写的代码一般都存放在这个文件里4主程序文件Program.cs文件被称为主程序文件,其中包含程序的入口Main()方法。C#程序是从Main()方法(函数)开始执行的。窗体有两种编辑窗口,分别是窗体设计器和窗体代码编辑器。可以使

33、用解决方案资源管理器窗口中的“查看代码”和“查看设计器”这两个工具在窗体设计器窗口和窗体代码编辑器窗口间实现切换。查看代码查看设计器任务2.3 编写电子时钟程序创建新的Windows应用程序Windows应用程序结构编写电子时钟应用程序运行程序保存和打开“电子时钟”程序一个Windows应用程序的编写一般需要经过下面的几个步骤:创建用户界面设置属性编写程序代码(1)将鼠标指针停在窗体的右下角,直到指针形状变成“双箭头”为止,然后拖动鼠标,调整窗体的大小,使窗体变成合适的大小。(2)单击“工具箱”中的Lable控件。(3)将鼠标移到窗体上。鼠标指针变成十字形状,然后拖动鼠标,在窗体中安放一个La

34、ble控件,此时窗体中应出现一个显示为label1的Label控件。利用“格式”菜单下的选项可以很方便地进行多个控件大小和位置的控制(1)单击选中窗体上的Label控件。修改控件的name属性为lblClock。(2)单击“视图”菜单中的“属性窗口”命令,或按下F4键,显示属性窗口。(3)调整属性窗口的大小,或滚动“属性窗口”,找到Text属性。这个属性代表Label控件上显示的文字。(4)双击Text属性,删除原来的label1文字。(5)打开“属性窗口”顶部的“对象”下拉列表框,在这个列表框中将显示出当前窗体中的所有控件。(6)选中列表框中的“Form1 System.Windows.Fo

35、rms.Form” 选项,它代表窗体自身。(7)在Text属性栏中输入新的属性值:“电子时钟程序”,此时可以看到窗体左上角将原来显示的Form1,转变成“电子时钟程序”。(8)为了能不断的显示时间,我们还需加入一个计时器Timer组件。在工具栏中选择“组件”,双击其中的Timer组件,将向窗体中添加名称为timer1的组件。(9)在timer1的属性窗口中将Enable属性设置为True,Interval属性设置为1000。在窗体设计器中,单击timer1组件,在属性窗口的事件选项卡中双击Tick事件,在打开的代码编辑器窗口的timer1_Tick事件中输入如下代码:lblClock.Text

36、 = DateTime.Now.ToString();Tick事件是Timer计时器组件中一个主要事件,当Timer组件Enable属性被设置为True时Timer组件开始工作,每隔Interval属性设置的时间(单位是毫秒),Timer组件中的Tick事件就会执行一次。任务2.3 编写电子时钟程序创建新的Windows应用程序Windows应用程序结构编写电子时钟应用程序运行程序保存和打开“电子时钟”程序运行程序可以通过以下方式之一实现:(1)单击标准工具栏上的“启动调试”按钮(2)选择“调试”菜单中的“启动调试”命令(3)按下快捷键“F5”。任务2.3 编写电子时钟程序创建新的Window

37、s应用程序Windows应用程序结构编写电子时钟应用程序运行程序保存和打开“电子时钟”程序保存程序更改保存的文件名打开程序保存程序可以用以下方法之一实现:(1)选择“文件”菜单中的“全部保存”命令(2)单击标准工具栏中的“全部保存”按钮(3)运行程序。VS 会在每一次运行程序前,将项目自动保存一次。保存程序时,各个文件的名字和项目名称一般都采用默认值。窗体文件名的默认值为FormX(X为数字)。如果想改变这个名字,可以按照下面的步骤操作:(1)单击“解决方案资源管理器”中的Form1.cs文件。 (2)在“属性”窗口中找到“文件名”属性,并双击。(3)输入新的文件名:Clock.cs。(4)保

38、存项目。打开项目可以采用下面的方法之一:(1)在“起始页”中,单击“打开项目”链接。在出现的“打开项目”对话框中,浏览项目所在的文件夹,选择其中的解决方案文件(sln)文件或项目文件(csproj)文件,并确定。(2)选择“文件”菜单中的“打开”菜单中的“项目”命令。在出现的“打开项目”对话框中,选择相应的解决方案文件或项目文件,并确定。(3)单击工具栏中的“打开”按钮。在出现的“打开项目”对话框中,在对话框中选择相应的解决方案文件或项目文件,并确定。(4)在Windows资源管理器中直接双击项目文件。任务2.4 学习窗体对象Windows窗体(Form)是一个矩形窗口,它可以改变尺寸、在屏幕

39、上移动或在任务栏上最小化。每个应用程序被执行时,一般都是从窗体开始的。在.NET Framework中,定义了一个名为Form的类,它实现了窗体最基本的属性方法和事件。任务2.4 学习窗体对象窗体常用属性窗体常用方法窗体常用事件Name属性:窗体的名字,可以在代码中通过名字找到窗体。Text属性:标题栏上显示的文字。Size属性:设置窗体的大小,包括高度和宽度。BackColor属性:背景颜色AcceptButton和CancleButton属性:指定默认的确认按钮和取消按钮。确认按钮在按回车键时执行,不管鼠标指针在哪个控件上。取消按钮在按ESC时自动启动。只有窗体上存在命令按钮控件时,这两个

40、属性才可以使用,一次最多只能设一个默认按钮。MinimizeBox属性、MaximizeBox属性:最大化、最小化按钮是否会出现。MinimizeSize属性、MaximizeSize属性:窗体的最大值和最小值。 TopMost属性:窗体是否是置顶窗体。StartPosition属性Name属性是每个窗体或控件都具有的属性,用来描述控件的名称。例如:将窗体的Name属性设置为MyForm,那么在代码中就可以通过MyForm找到窗体。Text属性用来描述在窗体的标题栏上显示的文字。例如:将窗体的标题栏文字设置为“我的C#程序”的代码为:this.Text = 我的C#程序;Size属性用来设置窗

41、体的大小。Size属性值是Size结构,它提供对象的Width(宽)属性和Height(高)属性。可以在属性窗口中单击Size属性前面的+号,展开Size属性,分别设置Width和Height的属性值。BackColor属性用来描述窗体的背景颜色。AcceptButton属性用于指定默认的“确认”按钮, “确认”按钮在按回车键时执行,不管此时焦点在哪个控件上。CancelButton属性用于指定默认的“取消”按钮。“取消”按钮在按Esc键时自动执行。只有窗体上存在命令按钮(Button)控件时,这两个属性才可用。一个窗体中,同时只能设置一个默认按钮。MinimizeBox属性用于设置窗体上是否

42、会出现最小化按钮。该属性为True时,窗体中有最小化按钮,为False时,没有最小化按钮。MaximizeBox属性用于设置窗体上是否会出现最大化按钮。该属性为True时,窗体中有最大化按钮,为False时,没有最大化按钮。MinimizeSize属性用于设置窗体可以实现的最小尺寸,即窗体大小的最小值MaximizeBox属性用于设置窗体可以实现的最大尺寸,即窗体大小的最大值例如,设置窗体为固定大小的代码为:this.MaximumSize = this.Size;this.MinimumSize = this.Size;TopMost属性用来决定窗体是否是一个置顶窗体。所谓置顶窗体,是指该窗

43、体会永远出现其它窗口的前面,不会被其它窗口覆盖。该属性为True时,窗体是置顶窗体。默认为False。StartPosition属性用来设置窗体显示时的起始位置。如该属性设置为CenterScreen,则窗体则出现在屏幕的中心。任务2.4 学习窗体对象窗体常用属性窗体常用方法窗体常用事件1.Focus( )方法 Focus()方法可以使窗体获得焦点。 2. Show( )方法 Show()方法用于显示窗体,使窗体可见。3. ShowDialog( )方法 ShowDialog()方法以模态对话框方式显示窗体。任务2.4 学习窗体对象窗体常用属性窗体常用方法窗体常用事件事件事件触发时间Click

44、对象被鼠标单击时发生Doubleclick对象被鼠标双击时发生GotFocus对象得到焦点时发生LostFocus对象失去焦点时发生MouseDown用户在对象上按下鼠标按钮时发生MouseEnter鼠标指针进入对象时发生MouseHover鼠标指针在对象上停留时发生MouseLeave鼠标指针离开对象时发生MouseMove鼠标指针在对象上移动时发生MouseUp用户在对象上释放鼠标按钮时发生任务2.5 学习注释注释是为了方便阅读而为代码添加的简短的解释性说明。注释不是语句,在编译程序时,编译器会忽略注释内容,不会对其进行编译,更不会执行注释。在编程时,我们应养成书写注释的良好习惯。C#的注

45、释符号有两种:/* */(成对使用)和/。任务2.5 学习注释通过选择一行或多行代码,然后在“编辑”工具栏上选择“注释”( ) 按钮和“取消注释”( ) 按钮,可以添加或移除某段代码的注释符。这种方法在为连续的多行代码加注释时会更加方便。若在某个方法前连续输入三个/(斜杠),Visual Studio 2010会自动加入一个摘要(Summary),可以在摘要中加入以上功能注释。摘要注释任务2.6 学习MessageBox对象在.NET Framework中,使用MessageBox对象来实现消息对话框。MessageBox对象的共享方法Show()方法的语法为: MessageBox.Show

46、(消息,标题,按钮种类,图标种类);要显示的提示信息消息对话框显示的标题信息消息对话框中按钮的种类及个数消息对话框中显示图标的类型652.6.1 消息框(MessageBox)消息框是Windows窗体应用程序中经常用于人机交互操作的对象之一,用来显示简短的提示信息和几个按钮。显示消息框之后,程序处于等待状态,用户必须单击消息框中的某个按钮之后,程序才会继续运行。任务2.6 学习MessageBox对象MessageBox.Show(消息对话框);MessageBox.Show(消息对话框, 标题);MessageBox.Show(消息对话框, 两个按钮, MessageBoxButtons.

47、OKCancel);MessageBox.Show(“消息对话框”, “三个按钮”, MessageBoxButtons.AbortRetryIgnore);MessageBox.Show(消息对话框, 有图标, MessageBoxButtons.OK, MessageBoxIcon.Error);执行结果参加课本P23.67无返回值的消息框MessageBox.Show(text,title,buttons,icon);text 提示信息title 标题栏上的提示信息buttons 按钮的组合样式icon 图标样式68有返回值的消息框 DialogResult var = MessageB

48、ox.Show(text,Text, buttons,icon);69例2.6 显示消息框中被选择按钮返回值private void button1_Click(object sender, EventArgs e) DialogResult result = MessageBox.Show(“是否保存已修改过的内 容?, 保存文件, MessageBoxButtons.YesNoCancel); label1.Text = 您刚才选择的按钮是: + result; 70MessageBoxButtons集合的枚举选项 71MessageBoxIcon集合的枚举选项 72DialogResul

49、t的枚举常量 使用实例MessageBox.Show()共有21中重载方法。现将其常见用法总结如下:1.MessageBox.Show(Hello);最简单的,只显示提示信息。 2.MessageBox.Show(There are something wrong!,ERROR);可以给消息框加上标题。 3.if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButtons.OKCancel) =DialogResult.OK)/delete询问是否删除时会用到这个。 4.if(MessageBox.Show(Delet

50、e this user?,Confirm Message,MessageBoxButtons.OKCancel,MessageBoxIcon.Question) =DialogResult.OK)/delete可以给MessageBox加上一个Icon,.net提供常见的Icon供选择。 5.if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2) =DialogResult.OK

51、)/delete可以改变MessageBox的默认焦点,如下: 6.if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2,MessageBoxOptions.RtlReading) =DialogResult.OK)/delete反向显示: 7.if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButto

52、ns.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2,MessageBoxOptions.RightAlign,true) =DialogResult.OK)/delete添加Help按钮: 8.if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1,MessageBoxOptions.RtlRead

53、ing,/folder/file.htm) =DialogResult.OK)/delete指定帮助文件的路径,点击即可打开该路径下的帮助文件。 9./HelpNavigator指定常数来指示要显示的帮助文件元素。Find帮助文件将打开到搜索页。if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1,MessageBoxOptions.RtlReading,/folder/file

54、.htm,HelpNavigator.Find) =DialogResult.OK)/delete MessageBox课堂练习课后p24:在电子时钟程序中添加一个按钮控件,其Text属性为“关于”,单击这个按钮时,使用MessageBox对象显示信息“这是我的第一个应用程序”任务2.7 学习DateTime类型DateTime结构,用于表示某个时刻,通常用来表示日期以及一天中的某个具体时间。通过使用DataTime的属性、方法可以获取时间中的任意部分和格式。 任务2.7 学习DateTime类型实例化 DateTime 对象DateTime date1 = new DateTime(2008

55、, 5, 1, 8, 30, 52);年份月份日小时分钟秒此时,date1变量代表的日期时间为:2008年5月1日8点30分52秒任务2.7 学习DateTime类型Now 属性DataTime的Now属性用于获取计算机上的当前日期和时间,表示为本地时间。例如: DateTime date1 = DateTime.Now;此时,date1变量代表的日期时间为:当前日期和时间任务2.7 学习DateTime类型DateTime 的值本身无法以文本的形式显示,使用ToString()方法可以将日期和时间以字符串的形式显示出来。例如: lblClock.Text = DateTime.Now.ToS

56、tring();此时,lblClock标签控件中的文字为:当前日期和时间的字符串形式也可以使用Parse()using System;public class switchTestpublic static void Main()int num;Console.WriteLine(“请输入一个1-7之间的数字:”);string input = Console.ReadLine();num = int.Parse(input);/同理也有long.parse(),datetime.parse()等等 switch (num)case 1: Console.WriteLine(Monday);b

57、reak;case 2: Console.WriteLine(Tuesday);break;case 3: Console.WriteLine(Wednesday);break;case 4: Console.WriteLine(Thursday);break;case 5: Console.WriteLine(Friday);break;case 6: Console.WriteLine(Saturday);break;case 7: Console.WriteLine(Sunday);break;default: Console.WriteLine(输入的数字不正确!);break;Clock源程序using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;namespace Clock static class Program / / 应用程序入口点 /

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论