1、第一章第一章 编制简单编制简单c#应用程序应用程序 1 C#的由来 微软于2000 年6 月26 日正式发布了C#。C#是一种最新的、面向对象的编程语言。C#使得程序员可以在 Microsoft 开发的最新的.NET 平台上快速地编写Windows应用程序,而且 Microsoft.NET 提供了一系列的工具和服务来最大程度地开发和利用计算与通信领域。1.1 C#语言简介语言简介 2 C#的特点 1)语法简洁易用)语法简洁易用 2)能与)能与 Web结合紧密结合紧密3)具备)具备.NET的自动的资源回收机制的自动的资源回收机制 4)具备完整的安全性与完善的异常处理机制)具备完整的安全性与完善的
2、异常处理机制5)版本可控)版本可控(Versionable)6)具备良好的灵活性和兼容性)具备良好的灵活性和兼容性 1.1 C#语言简介语言简介 .NET 是Microsoft XML Web services 平台。强大的集成开发环境(IDE)Visual Studio.NET。XML Web services 允许应用程序通过 Internet进行通讯和共享数据。.NET 的核心是 Microsoft.NET Framework(微软.NET 框架体系)。2 .NET开发平台开发平台 1 创建项目创建项目(1)打开VS2010集成开发环境。(2)创建项目,方法有3种:第一种在【起始页】中单
3、击【创建】选项中【项目】创建;第 2 种方法是单击【文件】菜单,选择【新建】|【项目】创建;第3 种方法是单击工具栏上的第 1 个【新建】按钮,选择【项目】创建。单击【项目】按钮后,将显示【新建项目】对话框,如图 1.9 所示。(3)在【项目类型】框内选中【Visual C#】项目下的【Windows窗体应用程序】选项。(4)在【模板】列表框内选择【Windows窗体应用程序】或者【控制台应用程序】项。本书将重点介绍“Windows 窗体应用程序”和“控制台应用程序”的编写,请读者熟记这两种应用程序的创建方法。(5)单击【位置】文本框右边的【浏览】按钮,选择一个文件夹对项目进行保存或者直接在文
4、本框内进行手动更改。(6)在【名称】文本框内,项目名称默认为“ConsoleApplication1”或“WindowsFormsApplication1”,可以根据实际情况把项目名称改为自己喜欢的名字。(7)单击窗口右下角的【确定】按钮,建立所要编写的应用程序。注意:前面的 项目创建的7个步骤是创建【Windows 应用程序】或者【控制台应用程序】所必须要做的相同的准备工作。1.3 第一个控制台第一个控制台应用程序应用程序1.3 第一个控制台第一个控制台应用程序应用程序2 创建第一个控制台应用程序创建第一个控制台应用程序【任务【任务1-1】编写第一个控制台应用程序。编写第一个控制台应用程序。
5、1.任务要求:1、在C盘根目录下新建一个自己学号姓名的文件夹;2、在自己的学号文件夹下创建第一个控制台应用程序helloc(项目名称);3、控制台应用程序完成的功能是:输出字符串“这是我的第一个控制台应用程序!”2.创建步骤控制台应用程序的步骤:(1)根据上述创建【控制台应用程序】的方法创建【名称】为“helloc”的控制台应用程序。(2)创建好后在开发环境界面的项目设计区显示的是【代码】窗口。在开发环境界面的浮动面板区停靠的窗口【解决方案资源管理器】生成名称为“helloc”的解决方案。如图 1.10 所示。(3)在代码static void Main(string args)后面的两个大括
6、号之间输入代码 Console.WriteLine(这是我的第一个控制台应用程序!);;如图 1.11 所示,这是用来运行显示“这是我的第一个控制台应用程序!”的代码。(4)为了防止程序运行完毕后控制台窗口自动关闭。需要再输入代码:Console.ReadLine();否则程序运行完毕会自动关闭控制台窗口,因为运行速度快而看不到结果。1.3 第一个控制台第一个控制台应用程序应用程序 3 编写第一个编写第一个Windows应用程序应用程序【任务1-2】编写第一个Windows窗体应用程序 1.任务要求:在自己的学号文件夹下创建第一个Windows应用程序helloworld,实现功能功能:当单击
7、“确定”按钮时,上方的文本框中将弹出“恭喜,你会编写C#程序了!”界面如下图4.13所示。1.3 第一个控制台第一个控制台应用程序应用程序第二章第二章 常用标准常用标准控件控件 1.调用控件调用控件 在创建窗体应用程序时,需要使用某一控件,只要单击工具箱中相应的按钮,然后在窗体上拖动出相应大小的矩形框,窗体上就会生成一个大小相对应的控件。具体的操作过程如下。(1)点击工具栏上 图标,打开工具箱。(2)在工具箱中找到需要的控件,单击该按钮,这一按钮呈现被按下状态,表明被选定。(2)将鼠标移动到控件上,这时鼠标的指针变成十字形并带有该控件的形状,移动到需要放置的的位置,然后点击鼠标左键。(3)点击
8、控件,控件上出现带小方格的虚线框,鼠标呈带箭头的十字时可以移动控件,调整位置,移动鼠标至控件边界虚线框可以调整控件的大小。2.1 调用和调整控件调用和调整控件 2.调整空间尺寸与位置调整空间尺寸与位置 移动鼠标,点击需要调整的控件,可以选中窗体上添加的控件,在控件的四周出现的小矩形框虚线框称为尺寸手柄。可用这些尺寸手柄调节控件的尺寸,也可用鼠标、键盘和菜单命令移动控件、锁定和解锁控件位置以及调节控件位置。选中控件,然后移动鼠标至虚线边框的尺寸手柄上,这时鼠标指针会变成双箭头形。按住鼠标左键,移动鼠标可以调整控件大小。在调整Windows窗体是用法一样。调整控件的位置时,可以使用上述方法,按住鼠
9、标移动,也可以在出现尺寸手柄时按键盘上的方向键来实现,调整控件到适当的位置。调整控件大小和位置,也可以在选中控件后,在其属性窗口中修改 Size 属性和 Location 属性,可以精确的实现控件尺寸与位置的调整。在 Visual Stdio.NET 提供了控件之间的对齐基准线,当移动一个控件到与另一个控件平行或垂直位置时,Visual Stdio.NET 会自动将2个或多个控件对齐到同一直线。2.1 调用和调整控件调用和调整控件 3.多控件布局多控件布局1)快速生成多个控件 打开工具箱,在工具箱中直接双击所需要的控件按钮,就会在当前窗体上生成一个个默认大小的控件2)调整叠放次序 如果两个控件
10、的范围有重叠,默认循序是后放到窗体上的控件将被视为上层,将覆盖与它重叠的下层控件的部分。可以点击鼠标右键,弹出菜单选项【置于顶层】【置于底层】来修改层次位置,也可以通过【格式】|【顺序】菜单命令下的【置于顶层】【置于底层】来调整。其中【置于顶层】将被选控件设置为上层,而【置于底层】将被选控件设置为下层。也可以点击布局工具栏中的 来调整。3)选择多个控件在窗体上选择多个控件的方法有以下几种:A选择其中一个控件后,按住Ctrl 键或 Shift 键,再依次点击需要选择的其他控件,选定的控件都会出现尺寸权柄。B也可以在窗体上选定一个位置按住鼠标左键拖出一个矩形框,松开鼠标后框内选定框内所有控件。这时
11、如果按住鼠标左键移动鼠标,可以同时移动选定的多个控件。也可以拖动尺寸权柄,同时调整多个控件的尺寸的大小。2.1 调用和调整控件调用和调整控件 1、控件常用属性:(1)Name 属性:用来获取或设置窗体的名称,在应用程序中可通过Name 属性来引用窗体。(2)WindowState 属性:用来获取或设置窗体的窗口状态。取值有三种:Normal(窗体正常显示)、Minimized(窗体以最小化形式显示)和Maximized(窗体以最大化形式显示)。(3)StartPosition 属性:用来获取或设置运行时窗体的起始位置。(4)Text 属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显
12、示的文字。(5)Width 属性:用来获取或设置窗体的宽度。(6)Height 属性:用来获取或设置窗体的高度。(7)Left 属性:用来获取或设置窗体的左边缘的x 坐标(以像素为单位)。(8)Top 属性:用来获取或设置窗体的上边缘的y 坐标(以像素为单位)。(9)ControlBox 属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。值为true时将显示控制框,值为false 时不显示控制框。(10)MaximizeBox 属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。值为true 时显示最大化按钮,值为false 时不显示最大化按钮。2.2
13、常用控件的使用常用控件的使用(11)MinimizeBox 属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。值为true 时显示最小化按钮,值为false 时不显示最小化按钮。(12)AcceptButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按Enter 键时就相当于单击了窗体上的该按钮。(13)CancelButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按Esc 键时就相当于单击了窗体上的该按钮。(14)Modal 属性:该属性用来设置窗体是否为有模式显示窗体。如果有模式地显示该窗体,该属性值为true;否则为fals
14、e。当有模式地显示窗体时,只能对模式窗体上的对象进行输入。必须隐藏或关闭模式窗体(通常是响应某个用户操作),然后才能对另一窗体进行输入。有模式显示的窗体通常用做应用程序中的对话框。(15)ActiveControl 属性:用来获取或设置容器控件中的活动控件。窗体也是一种容器控件。(16)ActiveMdiChild 属性:用来获取多文档界面(MDI)的当前活动子窗口。2.2 常用控件的使用常用控件的使用 (17)AutoScroll 属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。如果此属性值设置为true,则当任何控件位于窗体工作区之外时,会在该窗体上显示滚动条。另外,当自动滚动打
15、开时,窗体的工作区自动滚动,以使具有输入焦点的控件可见。(18)BackColor 属性:用来获取或设置窗体的背景色。(19)BackgroundImage 属性:用来获取或设置窗体的背景图像。(20)Enabled 属性:用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。如果控件可以对用户交互作出响应,则为true;否则为false。默认值为true。(21)Font 属性:用来获取或设置控件显示的文本的字体。(22)ForeColor 属性:用来获取或设置控件的前景色。(23)IsMdiChild 属性:获取一个值,该值指示该窗体是否为多文档界面(MDI)子窗体。值为true
16、时,是子窗体,值为false 时,不是子窗体。2.2 常用控件的使用常用控件的使用(24)IsMdiContainer 属性:获取或设置一个值,该值指示窗体是否为多文档界面(MDI)中的子窗体的容器。值为true 时,是子窗体的容器,值为false 时,不是子窗体的容器。(25)KeyPreview 属性:用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗体是否将接收该事件。值为true 时,窗体将接收按键事件,值为false 时,窗体不接收按键事件。(26)MdiChildren 属性:数组属性。数组中的每个元素表示以此窗体作为父级的多文档界面(MDI)子窗体。(27)Md
17、iParent 属性:用来获取或设置此窗体的当前多文档界面(MDI)父窗体。(28)ShowInTaskbar 属性:用来获取或设置一个值,该值指示是否在Windows 任务栏中显示窗体。(29)Visible 属性:用于获取或设置一个值,该值指示是否显示该窗体或控件。值为true时显示窗体或控件,为false 时不显示。(30)Capture 属性:如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内2、常用方法(1)Show 方法:该方法的作用是让窗体显示出来,其调用格式为:窗体名.Show();其中窗体名是要显示的窗体名称。(2)Hide 方法:该方法的作
18、用是把窗体隐藏出来,其调用格式为:窗体名.Hide();其中窗体名是要隐藏的窗体名称。(3)Refresh 方法:该方法的作用是刷新并重画窗体,其调用格式为:窗体名.Refresh();其中窗体名是要刷新的窗体名称。(4)Activate 方法:该方法的作用是激活窗体并给予它焦点。其调用格式为:窗体名.Activate();其中窗体名是要激活的窗体名称。(5)Close 方法:该方法的作用是关闭窗体。其调用格式为:窗体名.Close();其中窗体名是要关闭的窗体名称。(6)ShowDialog 方法:该方法的作用是将窗体显示为模式对话框。其调用格式为:窗体名.ShowDialog();2.2
19、常用控件的使用常用控件的使用 3常用事件(1)Load 事件:该事件在窗体加载到内存时发生,即在第一次显示窗体前发生。(2)Activated 事件:该事件在窗体激活时发生。(3)Deactivate 事件:该事件在窗体失去焦点成为不活动窗体时发生。(4)Resize 事件:该事件在改变窗体大小时发生。(5)Paint 事件:该事件在重绘窗体时发生。(6)Click 事件:该事件在用户单击窗体时发生。(7)DoubleClick 事件:该事件在用户双击窗体时发生。(8)Closed 事件:该事件在关闭窗体时发生。2.2 常用控件的使用常用控件的使用 第三章第三章 C#编程编程基础基础 关键字关
20、键字3.1 C#中的关键字和标志中的关键字和标志符符AbstractAsBaseBoolbreakByteCharCheckedClassConstContinueDecimalIfGotoForeachForFloatFixedExternExplicitEventEnumElseDoubleImplicitIntInterfaceInternalIsLockNewNullObjectOperatorOutOverrideStaticStachallocSizeofShortScaledSbyteReadonlyPublicProtectedPrivateParamsSwitchTrueTr
21、yTypeofUnitUlongUncheckedUsingWhileVoidVirtualCaseInThrowFalseCatchLongDefaultNamespaceUshortReturnDelegateStructThisDoStringRefUnsafeFinally 2 标志符标识符命名的规范:标识符命名的规范:(1)只能由字母、数字、汉字、下划线组成,且必须以字母或下划线开头。如abc12,_abc等,如使用1a作为标志符就是错误的,应该a1。(2)为了提高程序可读性与记忆性,标识符要有一定的意义。在标志符命名时,尽可能做到“见名知意”,可以提高程序的可读性,使得设计的程序可
22、读性高,易懂。(3)用户定义的标识符不能与C#语言的关键字(保留字)同名。前面关键字的时候提到关键字是C#编译系统预定义的保留标志符,程序设计中定义标志符不能使用关键字,否则会报错,编译失败。(4)C#对标识符的大小写敏感,一定要注意大小写一致。比如定义一个标志符为Abc,在使用这个标志符时,写成abc,就会报错,这两个是不同的标志符,而不是一个标志符。(5)标志符中不能包含空格。3.1 C#中的关键字和标志符中的关键字和标志符 3 C#的两种命名约定 C#的两种命名约定:CamelCase和PascalCase3.1 C#中的关键字和标志符中的关键字和标志符3.2 数据类型数据类型1 简单数
23、组(一简单数组(一 维维 数数 组)组)(一)一维数组的声明与创建(一)一维数组的声明与创建1数组的声明 数组是一种数据结构,它可以包含同一个类型的多个元素。在 C中,声明一维数组的方式是在类型名称后添加一对方括号,如下所示:数据类型 数组名例:int myArray;/定义了一个整型数组 myArray。声明一个数组时不需要先确定数组的长度,数组的大小不是其类型的类容。2数组初始化 声明了数组之后,就必须为数组分配内存,以保存数组的所有元素。数组是引用类型,所以必须给它分配堆上的内存。为此,应使用new运算符,指定数组中元素的类型和数量来初始化数组的变量。如下所示:数组名=new 数据类型数
24、组大小表达式 3.3 数组数组(二)一维数组的初始化一维数组的初始化 前面讲了数组的声明,在C#中声明数组的同时也可以对其进行初始化,只需将初始值放在大括号“”内即可,表达式如下所示:数据类型数据类型 数组名数组名=new 数据类型数据类型 初值表初值表 其中,初值表中的初始数据用逗号分隔。例如,将上面声明语句初始化(这种情况下,数组的长度由大括号中的元素个数来确定),其中每个数组元素被初值表中的数据初始化。例:int myArray=new int 1,3,5,7;3.3 数组数组(三)一维数组的元素的访问一维数组的元素的访问 在声明和初始化数组之后,可以使用索引器访问其中的元素。数组只支持
25、有整型参数的索引器。索引器总是以0开头,表示第一个元素。可以传递给索引器的最大值是元素个数减1,因为索引从0开始。访问一维数组元素的方式为:数组名索引 比如上面的初始化的例子:int arr=1,3,5,7;执行后,各处元素按顺序排列如图 3.3所示。图3.3 数组元素排列图 3.3 数组数组 对数组进行赋值时,可以像访问变量的形式直接给数组元素赋值,也可以使用循环语句给每个元素赋值,例:int a=new int4;a0=8;/给a0赋值8 a4=a0;/给a4赋值a0,最终a4也将获得整数8的值 程序分析:上面的语句定义、创建一个大小为 4的整型数组 a,并给数组元素 a0、a4赋值:3.
26、3 数组数组 1 C#中的变量中的变量 在计算机系统中,处理的数据是存在存储器中的,存储单元可以用一个名称,也就是一个标志符来表示,比如我们要计算55+60,55和60都是存在于存储单元中的,我们定义X和Y,并用X代表55,Y代表60,则上面的式子可以写成X+Y。所以在程序设计中,变量可以用于保存程序运行过程中的输入数据、计算的结果值及其中间数据等。变量的声明格式:在C#中,变量必须先定义后使用,其声明格式为:格式1:变量修饰符 类型说明符 变量名1=初值1,变量名2=初值2,;格式2:变量修饰符 类型说明符 变量名1,变量名2,;3.4 变量和常量变量和常量 2 常量常量“常量”的广义概念是
27、:不变化的量(利如:在计算机程序运行时,不会被程序修改的量;数学函数中的某一个量,例如每一个具体的圆的半径、直径数值;物理学中的靠近地面的重力加速度;真空中的光速数值;不同的微粒的各自的质量)换言之,常量,在计算机技术方面虽然是为了硬件、软件、编程语言服务,但是它并不是专门为硬件、软件、编程语言而引入的概念。常量可区分为不同的类型,如:25、0、-8为整型常量,6.8、-7.89为实型常量,a、b为字符常量。总而言之常量就是所保存的值始终保持不变的存储单元的名称。常量的声明格式为:常量修饰符 const 类型说明符 变量名=常量表达式;3.4 变量和常量变量和常量 1 隐式类型转换隐式类型转换
28、 隐式转换就是系统默认的、不需要加以声明就可以进行的转换。实现的是将一种类型转换为另一种类型的过程中不需要人为的添加代码去实现,编译器无需对转换进行详细检查就能够安全地执行转换。比如从int类型转换到long类型就是一种隐式转换。隐式转换一般不会失败,转换过程中也不会导致信息丢失。例:int i=10;long j=i;3.5 C#的隐式类型转换和显式类型的隐式类型转换和显式类型转换转换 隐式数值转换包括以下几种:从sbyte类型到short,int,long,float,double,或decimal类型。从byte类型到short,ushort,int,uint,long,ulong,fl
29、oat,double,或decimal类型。从short类型到int,long,float,double,或decimal类型。从ushort类型到int,uint,long,ulong,float,double,或decimal类型。从int类型到long,float,double,或decimal类型。从uint类型到long,ulong,float,double,或decimal类型。从long类型到float,double,或decimal类型。从ulong类型到float,double,或decimal类型。从char类型到ushort,int,uint,long,ulong,flo
30、at,double,或decimal类型。3.5 C#的隐式类型转换和显式类型的隐式类型转换和显式类型转换转换 2 C#的显式类型转换的显式类型转换 显式类型转换,又叫强制类型转换。与隐式转换正好相反,显式转换需要用户明确地指定转换的类型。比如要把一个long型转化成int型,或者把一个数字转化成字符型。例:long l=5000;int i=(int)l;显式转换的适用用于高精度向低精度数据类型的转换,一般格式如下:格式1:(数据类型)表达式;格式2:数据类型.Parse();格式3:变量(表达式).ToSring();3.5 C#的隐式类型转换和显式类型的隐式类型转换和显式类型转换转换运算
31、符类别运算符类别 运算符运算符基本算术运基本算术运算算+-*/%!递增、递减递增、递减+-位移位移 逻辑逻辑&|!-&|赋值赋值=+=-=*=/=%=&=|=关系关系=!=字符串串联字符串串联+成员访问成员访问 索引索引 转换转换()条件运算条件运算?:3.6运算符与运算符与表达式表达式运算符和表达式是程序的基本构成,程序的任务是对数据进行处理,数据是程序处理的对象,而运算符是施加给这些数据的操作。数据和运算符是表达式的基本元素。表达式由变量、常量、运算符、函数和圆括号按一定的规则组合而成。第四章第四章 条件判断与循环条件判断与循环控制语控制语句句 1 简单简单if语句语句 C#中if语句是指
32、编程语言中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。其一般形式为:if(表达式)语句块 4.1条件判断条件判断语句语句 2 ifelse语句语句 当判断语句只存在两种结果时,可以使用ifelse语句来实现。其变现形式为:if(条件)语句块1;else 语句块2;4.1条件判断条件判断语句语句3 ifelse if当判断存在多种可能结果时,可以使用ifelse if语句来实现,其表现形势如下:if(条件1)/语句1else if(条件2)/语句2else if(条件n)/语句n4.1条件判断条件判断语句语句在ifelse if语句中,语句中,if 块和 e
33、lse if 块本质上是互斥的,也就是说,一旦语句1得到了执行,程序会跳过 else if 块,else if 块中的判断语句以及语句2一定会被跳过;同时语句2的执行也暗含了条件1判断失败和语句1没有执行;当然还有第3个情况,就是条件1和条件2都判断失败,语句1和语句2都没有得到执行,以此类推。4 switch语句Switch语句又称为“开关语句”,作用是实现多分支的开关语句,和if语句相比局有直观简介的特点,当条件相当多时,用ifelse及其嵌套语句,使得程序的可读性变差,switch语句用来处理复杂的条件判断。其一般语法格式如下:switch(表达式)case 表达式的值1:待执行的一系列
34、语句;break;case 表达式的值n:待执行的一系列语句;break;default:待执行的一系列语句;break;4.1条件判断语句条件判断语句 1 while 语句 while是计算机的一种基本循环模式,判断一个条件表达式,以便决定是否进入和执行循环体,当满足该条件时进行循环,不满足该条件时则跳出循环程序流程图如4.11。while语句的一般表达式为:while(表达式)语句块(又称循环体)4.2 循环循环语句语句 2 dowhile 语句 dowhile 语句的表现形式为:do 语句块 while(表达式);4.2 循环循环语句语句 3 for语句 for(表达式 1;表达式2;表
35、达式3)语句块(循环体)4.2 循环循环语句语句 在一个循环体语句中又包含另一个循环语句,称为循环嵌套,包含的另一个循环语句车位内嵌的循环,其还可以嵌套循环,称为多层循环,之前学习的循环(while 循环、dowhile 循环和 for 循环)可以互相嵌套使用,使用时需要注意一下几点。使用循环嵌套时,内层循环和外层循环的循环控制变量不能相同。循环嵌套结构的书写,最好采用“右缩进”格式,以体现循环层次的关系。尽量避免太多和太深的循环嵌套结构。4.3 循环的嵌套循环的嵌套 foreach 语句的表现形式如下:foreach(类型 标识符 in 表达式)循环体 4.4 foreach 语句语句 第五
36、章第五章 C#面向对象编程面向对象编程 类和对象是面向对象的程序设计语言的核心和本质。类实际上定义了一种崭新的数据类型。类表示对现实生活中一类具有共同特征的事物的抽象,对象是具体的类,是类的实例化。它描述了一组有相同特性(数据元素)和相同行为(方法)的对象,具有封装性、继承性和多态性等特性。5.1 类和对象的类和对象的概念概念 类定义:(1)语法格式:类型修饰 class 类名:基类 类体(类成员);(2)类定义时的注意点:关键字class中的c为小写字母,在关键字class之前,可以指定类的特性和修饰符,用来控制类的可访问性等;类名一般由名词或名词短语构成,一般首字母大写;类体中可以对常量、
37、字段、方法、属性、事件、索引器、运算符、构造函数和析构函数等进行定义。5.1 类和对象的概念类和对象的概念5.2 类的类的成员成员成员成员说明说明常量常量与类关联的常数值字段字段类的变量方法方法类可执行的计算和操作属性属性与读写类的命名属性相关联的操作索引器索引器与以数组方式索引类的实例相关联的操作事件事件可由类生成的通知运算符运算符类所支持的转换和表达式运算符构造函数构造函数初始化类的实例或类本身所需的操作析构函数析构函数在永久丢弃类的实例之前执行的操作类型类型类所声明的嵌套类型 类的每个成员都有关联的可访问性,它控制能够访问该成员的程序文本区域。有五种可能的可访问性形式。下表5.2概述了这
38、些可访问性。5.2 类的类的成员成员可访问性可访问性含义含义public访问不受限制protected访问仅限于此类和从此类派生的类internal访问仅限于此程序protected internal访问仅限于此程序和从此类派生的类private访问仅限于此类 1.字段 字段是与类或类的实例关联的变量。使用 static 修饰符声明的字段定义了一个静态字段(static field)。一个静态字段只标识一个存储位置。对一个类无论创建了多少个实例,它的静态字段永远都只有一个副本。2.方法 方法(method)是一种用于实现可以由对象或类执行的计算或操作的成员。3.参数 参数用于向方法传递值或变量
39、引用。方法的参数从方法被调用时指定的实参(argument)获取它们的实际值。有四种类型的参数:值参数、引用参数、输出参数和参数数组。5.2 类的成员类的成员 4.方法体和局部变量 方法体指定了在该方法被调用时将执行的语句,可以声明仅用在该方法调用中的变量。这样的变量称为局部变量(local variable)。局部变量声明指定了类型名称、变量名称,还可指定初始值。5.静态方法和实例方法 使用 static 修饰符声明的方法为静态方法(static method)。静态方法不对特定实例进行操作,并且只能访问静态成员。5.2 类的成员类的成员 6.虚方法、重写方法和抽象方法 若一个实例方法的声明
40、中含有 virtual 修饰符,则称该方法为虚方法(virtual method)。若其中没有 virtual 修饰符,则称该方法为非虚方法(non-virtual method)。7.方法重载 方法重载(overloading)允许同一类中的多个方法具有相同名称,条件是这些方法具有唯一的签名。在编译一个重载方法的调用时,编译器使用重载决策(overload resolution)确定要调用的特定方法。重载决策将查找与参数最佳匹配的方法,如果没有找到任何最佳匹配的方法则报告错误信息。5.2 类的成员类的成员 8.其他函数成员 其他函数成员包含可执行代码的成员统称为类的函数成员(function
41、 member)。前一节描述的方法是函数成员的主要类型。本节描述 C#支持的其他种类的函数成员:构造函数、属性、索引器、事件、运算符和析构函数。5.2 类的成员类的成员图像的输入和保存l 在窗体或图形框内输入图像有两种方式:n 方法(一)、窗体设计时使用图形框对象的Image属性输入窗体设计时使用对象的Image属性输入图像的操作如下:(1)在窗体上,添加一个图形框控件pictureBox,选择图形框对象属性中的Image属性如右图。(2)单击Image属性右侧的【】按钮,弹出“选择资源”窗口下图所示,在该窗口中选择“本地资源”,单击【导入】按钮,弹出打开对话框,选择需要添加的文件路径,找到相
42、应的文件,然后点击打开按钮。1图像的输入n方法(二)、使用程序打开选择图像文件夹,输入图像在窗体上添加一个button按钮控件,并添加一个pictureBox图形框控件,双击按钮控件生成代码添加如下代码实现加载图像功能。1图像的输入1图像的输入点击按钮会弹出打开对话框,和方法一点击导入后效果一致。使用“打开文件”对话框,选择图像文件,该图像将会被打开,并显示在pictureBox1图像框中。拉伸 自动 居中 C#中图形保存使用SaveFileDialog 类,其作用是提示用户选择保存文件的位置。使用时首先要将SaveFileDialog 类实例化,创建SaveFileDialog对象,对其文件
43、过滤器filter赋值,filter。筛选器字符串必须包含筛选器的说明,后跟竖线(|)和筛选模式。不同筛选选项的字符串还必须以竖线分隔。例如:“文本文件(*.txt)|*.txt|所有文件(*.*)|*.*”。2图像的保存 实施步骤:创建windows窗体应用程序,解决方案名称为OpenSaveDemo;修改窗体form1的Name属性为MainForm,text属性为“图像处理”。根据图6.9所示添加控件创建窗体,PictureBox控件的Name属性为picDispaly,添加两个button控件,text属性分别为“打开”、“保存”,name属性分别为“btnOpen”、“btnSave
44、”。点击相应的button控件添加程序。打开按钮程序与上述方法二相同,不在赘述,保存按钮主程序如下:【项目【项目6-4】打开和保存图片 使用Bitmap对象的Save方法,可以把打开的图像保存为不同的文件格式,从而实现图像格式的转换。Imaging.ImageFormat支持的格式3图像格式的转换名称名称说明说明Bmp位图图像格式(BMP)Emf增强型Windows图元文件图像格式(EMF)Exif可交换图像文件(Exif)格式Gif图形交换格式(GIF)图像格式Guid表示此ImageForma 对象的Guid结构IconWindows图标图像格式Jpeg联合图像专家组(JPEG)图像格式MemoryBmp内存位图图像格式PngW3C可移植网络图形(PNG)图像格式Tiff标签图像文件格式(TIFF)图像格式WmfWindows图元文件(WMF)图像格式
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。