版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浙江树人大学信 息 科 技 学 院.Net程序设计(Windows)实验指导书适用:计算机科学与技术专业编写人:邱宁二O一一年八月第一章 实验指导第一节 上机实验总的目的和要求一、上机实验目的面向对象程序设计(OOP)的理念已经成为目前程序设计的主流思想,它改变了传统的程序设计模式,并日益显示出其强大的生命力。而C#.NET就是一个面向对象的应用程序开发工具,它具有新一代可视化开发环境、大量可重用的控件以及先进的编译技术,它具有功能强大、易学易用的好处。Visual C#.NET集成开发环境不仅有大量可视化控件和面向对象的程序设计语言,还有完整的设计、编写、调试和发布的工具软件。C#.NET的
2、精华体现在快速建立Windows应用程序、图形图像及多媒体制作、快速报表的制作、文本及图形的打印、Windows API函数的灵活运用、简化Web服务器与浏览器及后台数据库数据系统的集成等,它是Windows时代一个必不可少的开发工具。上机并不是将书本上的东西在机上按部就班地运行一下就行了,其目的为: 1、加深对讲授内容的理解。通过多次上机,就能自然地、熟练地掌握有关菜单、工具及命令的使用。 2、学会上机调试程序。也就是善于发现程序中的错误,对于编译错误,要求能很快地进行排除,使程序能正确运行,顺利生成可执行文件。经验丰富的人,当编译时出现"出错信息"时,能很快地判断出错误
3、所在,并改正之。而缺乏经验的人即使在明确的出错提示下也往往找不出错误,因此,在实验时应独立完成实践任务,发现问题要多动脑筋,必要时请求老师的指导。而对于逻辑错误,也要努力学会运用一些基本的调试手段,尽可能快地定位错误位置,并进行改正,使程序能正确运行。 3、掌握面向对象的设计思想,弄清其组织形式。通过本课程的学习与实践,要求能熟练掌握C#.NET设计应用程序的基本方法,掌握C#.NET中常用控件的使用,能制作出简单的应用程序。二、上机实验前的准备工作在上机实验前应事先做好准备工作,以提高上机实验的效率,准备工作至少应包括如下五个方面: 1、了解所用的计算机系统的性能和使用方法。 2、复习和掌握
4、与本实验有关的教学内容。 3、做好预习工作,主要注意以下几个方面:在实验之前,应提前熟悉实验内容,并尽量读懂实验指导书中的有关代码,分析代码功能及运行结果;对于设计部分,应提前写出所需代码(至少设计出流程),在动手写之前,应该先进行分析,确定这个应用程序应该具备的功能、系统将达到的目标以及如何调试应用程序。 4、对运行中可能出现的问题应事先作出估计;对程序中自己有疑问的地方,应作上记号,以便上机时给予注意。 5、准备好调试和运行时所需的数据。三、上机实验的步骤上机过程出现的问题,除了系统的问题外,应尽量自己独立处理,尤其对“出错信息“,应努力看懂,逐步积累,并逐渐学会分析判断。这是学习调试程序
5、的良好机会,只有通过这样的训练,才能逐步提高调试能力,使自己的动手能力得到提高。上机实验一般应包括以下几个步骤:1、上机调试(验证部分)根据要求,设计界面并验证指导书中有关代码段,记录结果,与预习过程中的结果进行对比并进行分析,记录调试过程中所遇到的问题及解决方法,另外,还需记录调试过程中的心得体会。2、设计部分这个阶段需设计界面并输入自行设计的有关代码,进行调试,反复修改,直到完成所要求的有关功能,另外还需记录2中所要求的有关内容。3、系统评价试运行应用程序特别是交互活动,有时不能准确预测用户的行为,会出现逻辑错误,甚至造成意外中断,因此要多次运行,多次修改,直到达到设计要求。在此过程中,应
6、记录有关心得体会,以便提高动手设计及调试程序的能力。四、实验后应完成实验报告的填写上机结束后,应整理出实验报告,实验报告应包括以下内容: 1、题目; 2、程序清单(计算机中经调试、运行验证正确的程序清单); 3、运行结果(必须是上面程序清单的输出结果); 4、对运行情况作出分析,以及在本次调试程序过程中所取得的经验及心得体会。如果程序未能通过,应分析其原因。5、完成思考题。第二节 程序的调试和测试(一)、程序的调试无论多么有经验的开发人员,也不论在编程过程中多么小心谨慎,也难以避免程序代码中出现错误。下面对快速查找、定位、排除故障给出一些建议。对于编译错误,更改起来比较容易,在编译过程中都有明
7、确的定位,只需要努力去尽快熟悉C#.NET的编译错误信息就可以了;而对于逻辑错误,要困难一些,不过,使用C#.NET的调试器能够迅速地查找错误,并提供更正建议。l 程序错误的类型:1、必须去修改的错误2、愿意去修改的错误3、感到有些疑点的错误l C#.NET调试器简介C#.NET的调试器能够一次一行地单步执行代码,并且根据需要查看和更改变量、常量及对象的值,帮助用户快速地找到错误并予以更正。1、 设置调试环境一般情况下,直接使用默认设置就能够满足大部分的需要,但有一点需要注意,一定启用项目属性页“生成调试信息”复选框设置为true。方法是在解决方案资源管理器中右击项目,在弹出的快捷菜单中执行“
8、属性”菜单项,如图1-1所示。出现如图1-2所示的对话框。图1-1 进入项目属性页图1-2项目属性页2、 调试选项调试选项在调试菜单中,常用选项有以下几个:(中为快捷键),如图1-3所示。Ø 启动:开始运行程序,到断点时暂停F5;Ø 开始执行(不调试):开始运行程序,但中间不能暂停Ctrl+F5;Ø 逐语句:一次运行一条语句,F11;Ø 逐过程(单步执行):根据程序设计步骤,一步步进行调试,F10;图1-3调试菜单3、 使用断点断点的设置很简单,只需在代码页需要设置的地方单击左边空白条即可(如图1-3中的紫红色圆点)。只要空白处出现一紫红色圆点,就表示断
9、点设置成功,再单击一次就可以解除断点设置。4、 使用监视窗口如果需要在运行程序时监视变量或常量的值,就可以使用监视窗口。在调试过程中(不处于调试状态该菜单是不同的),选择“调试”“窗口”“监视”“监视x”(x为某一个监视窗口号),就可打开监视x窗口,如图1-5所示。图1-4调试菜单中的窗口子菜单图1-5监视窗口在监视窗口中,每行可以监视一个对象(变量或对象)。要监视某一变量,应先在名称栏中直接输入您要监视的变量,然后按回车即可。调试程序时,常可采用跟踪变量与函数,观察其值随时间流的变化。另外,在调试程序时,对程序每次只做小修改,即,每次只改变一点,便于确定问题准确位置。有的时候,需要重建某一段
10、程序,比较它和原有程序的运行结果,如果后者好就替换掉前者。有时大刀阔斧比小修小补更有效。(二)、软件测试1、概述软件系统的最终表示是几百条或成千上万条程序语句。在这些语句中,一个不引人注意的语句就有可能导致整个系统的失败。在软件测试过程,应当选择多种类、少数量的测试数据并保证每条指令、每个分支以及每种错误条件至少执行一次。多种类意味着选用各种不同类型的数据;少数量意味着在相同种类的数据量上要尽可能的少。不使用大量测试数据的理由是不至于花费太多的时间去检测很多的相同测试用例是否能正确工作。此外,对任何软件不可能去测试全部可能的情况。2、测试步骤1)模块测试:模块测试是实现阶段最为重要的一个软件工
11、程步骤,是软件质量保证的关键环节,即使经过了代码评审,模块中必然要留存许多未被发现的逻辑错误,必须通过测试来暴露。这其实也就是在程序组装成一个整体之前,分别测试各个模块的操作。2)组装测试:组装测试是软件生存周期中的一个独立阶段。其主要任务是按照选定的策略,采用系统化的方法,将经过模块测试的模块按预先制定的计划逐步进行组装和测试。这种测试的目的在于发现与模块接口有关的问题,并将各个模块构成一个设计所要求的软件系统。3)确认测试:测试的最后一个步骤也是软件开发的最后一个阶段,是验证所组合的软件系统是否确实满足用户的需要,这是软件开发部门把软件产品交付使用之前的最后一种测试。在这个测试步骤中所发现
12、的错误往往是“软件需求规范书”中的错误。(三)、测试用例设计技术测试中广为采用的测试方法有三种:白盒测试法、黑盒测试法、灰盒测试法。不同的测试在选择测试用例方面有着很大的差别。白盒测试法:是根据详细设计中的逻辑流程来设计测试用例,以暴露编码中的逻辑错误。如逻辑覆盖法。黑盒测试法:是用“软件需求说明书“来设计测试用例,如等价划分法、边值分析法、错误猜测法等。灰盒测试法:是白盒测试法和黑盒测试法的混合。(四)、程序维护一个程序一旦被编写、调试、测试及最后判断为可以使用时,程序的研制阶段宣告结束,而程序的维护阶段就开始了。大部分的编程者都喜欢研制新程序而不愿去维护程序,其原因之一就是因为程序的维护是
13、一件没完没了的事,被认为不值得去做的工作。在程序维护时,应该特别注意修改错误和保护源程序两个问题。第二章 实验内容实验一 .NET系统环境与窗体一、 实验目的1. 熟悉Visual StudioC#.NET主界面的分布及各个部分的作用;2. 了解名字空间、类的概念;3. 掌握工具栏和属性窗口的使用;4. 初步掌握应用程序创建及保存的方法。二、 实验内容1 Visual StudioC#.NET主界面的使用。2 创建一个解决方案,添加一个项目,并进行保存、关闭、打开、编译及运行等操作。3 设置解决方案资源管理器、工具箱、属性、帮助窗口为自动隐藏。4 工具箱的使用、解决方案资源管理器的使用。5 使
14、用帮助(动态帮助),查询搜索的使用。三、 实验过程1 Visual StudioC#.NET主界面的使用启动Visual Studio.NET,创建一个解决方案,添加一个项目,仔细观察其集成环境,并分别将工具箱上的TextBox、Button控件拖动到窗体上,选中一个对象(窗体、TextBox或Button),在属性窗口(察看其属性,修改其属性值,观察其变化)、切换到代码窗口,观察程序代码的格式,了解名字空间的定义、类的定义格式,编辑器的使用实践。若有时间,还可在代码编辑器中进行Code Insight功能的使用。主菜单中的常用菜单项的使用:(1) 文件菜单l 新建新建解决方案、项目和一般文件
15、l 打开打开项目文件和一般文件l 关闭关闭当前窗口,若该窗口已作改变,则系统存盘l 添加新项在当前项目中添加一个新项(窗体、类等)l 添加现有项将一个现有项(即已设计好的)添加到当前项目中l 添加项目在当前解决方案中添加一个新的项目l 打开解决方案打开一个已存在的解决方案l 关闭解决方案关闭并存盘一个已存在的解决方案l 保存保存当前文档(不换名)l 另存为换名保存当前文档(2) 项目菜单l 添加Windows窗体在当前项目中添加一个Windows窗体l 添加继承的窗体以原有窗体为基础创建一个新窗体l 添加类在解决方案中添加一个新类l 添加新项与文件菜单相同l 添加现有项与文件菜单相同l 在项目
16、中排除在解决方案中删除当前项l 属性进入当前项目属性窗口(3) 生成菜单l 生成解决方案编译当前解决方案l 重新生成解决方案重新编译整个解决方案(4) 调试菜单详细请参见程序的调试和测试一节图3-1是Windows中记事本的界面。2 建立一个解决方案1) 单击“开始”“程序”“Microsoft Visual Studio .NET 2003”“Microsoft Visual Studio .NET 2003”项,进入Microsoft Visual Studio .NET集成环境。2) 执行“文件”“新建”“空白解决方案”菜单命令,创建一个空白解决方案,出现图1-6所示的“新建项目”对话框
17、。图1-6“新建项目”对话框3) 在“模板”列表框中选择“空白解决方案”;在“位置”列表框中选择一个应用程序的存放路径;在“名称”输入框中输入该空白解决方案的名称,这里输入SolTest。4) 单击“确定”按钮,就创建一个名为SolTest的解决方案。单击“视图”“解决方案资源管理器”菜单命令,打开解决方案资源管理器窗口,可以发现只是一个空白的解决方案,没有项目,如图1-7所示。图1-7“解决方案资源管理器”窗口5) 右击“解决方案资源管理器”窗口的标题栏,在弹出的快捷菜单中选择“自动隐藏”菜单项,将由系统根据需要自动隐藏该窗口,需要时,只要将光标移到缩小的“解决方案资源管理器”窗口(如图1-
18、3中右边)上系统就自动会展开(其它窗口也一样,可以类似设置)。6) 执行“文件”“新建项目”“添加项目”菜单命令,出现图1-8所示的“添加新项目”对话框。图1-8“添加新项目”对话框7) 在“项目类型”选择框中选择使用的语言。本教程中使用“C#”,故选中“Visual C#项目”。在“模板”列表框中选择该项目的模板,本实验中涉及的是Windows应用程序,故选择“Windows应用程序”。在“位置”列表框中选择一个解决方案;在“名称”输入框中输入该项目的名称,这里输入WinApplicationTest。8) 单击“确定”按钮,系统将在SolTest解决方案中添加一个名为“WinApplica
19、tionTest”的C#项目,如图1-9所示。窗体解决方案资源管理器窗体文件工具箱图1-9创建的WinApplicationTest项目从图1-9中可以看到,在创建的SolTest解决方案中有一个项目WinApplicationTest,而项目中系统自动创建了一个名为Form1的窗体。9) 右击Form1窗体,在弹出的快捷菜单中选择“查看代码”菜单项,如图1-10所示。系统将自动打开该窗体所对应的程序代码窗口,如图1-11所示。图1-10窗体的快捷菜单窗体选项卡代码选项卡图1-11窗体所对应的代码窗口从图1-11中可以看到,系统工具栏下有一个选项卡,内有若干选项卡(因操作不同,该选项卡是不同的
20、,但按以上步骤操作后,“Form1.cs设计”和“Form1.cs”两个选项卡肯定是存在的)。其中“Form1.cs设计”选项卡就是窗体,“Form1.cs”就是该窗体所对应的代码窗口。代码窗口中,前几行都是用using命令开头的,是系统引用(相当于C中的#include),将窗体所需要的引用全部自动的存放在这里。以后,随着编码的需要,随时可能需要在这里添加设计所需要的引用,对此,所有同学要有一个比较没有清醒的认识。接下来是namespace开头的名字空间定义。在这里,名字空间命名为WinApplicationTest,即与项目同名。再下面是class开头的窗体类定义。在这里,窗体类命名为Fo
21、rm1。引用说明创建窗体后,系统就已创建好其代码的格式,该格式很重要,务必要清楚。格式如下:using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace WinApplicationTest/ 名字空间定义/ 名字空间定义开始/<summary>/ Form1 的摘要说明。/</summary>publicclass/ 窗体类定义/ 窗体类定义开始/&
22、lt;summary>/必需的设计器变量。/</summary>private System.ComponentModel.Container components = null;public Form1()/ 窗体类构造函数/ Windows 窗体设计器支持所必需的/InitializeComponent();/ TODO: 在 InitializeComponent 调用后添加任何构造函数代码/ 窗体类构造函数结束/<summary>/清理所有正在使用的资源。/</summary>protectedoverridevoid Dispose( boo
23、l disposing )if( disposing )if (components != null) components.Dispose();base.Dispose( disposing );#region Windows 窗体设计器生成的代码/<summary>/设计器支持所需的方法 - 不要使用代码编辑器修改/此方法的内容。/</summary>privatevoid InitializeComponent()/ / Form1/ this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);this.Clie
24、ntSize = new System.Drawing.Size(292, 173);this.Name = "Form1"this.Text = "Form1"#endregion/<summary>/应用程序的主入口点。/</summary>STAThreadstaticvoid Main()/ 应用程序的开始点Application.Run(new Form1();/ 窗体类定义结束/ 名字空间定义结束注意:namespace和class的定义格式,一定要成对。可以使用“Ctrl+”来检查所有括号(),的匹配情况。10) 切
25、换到“Form1.cs设计”选项页,展开工具箱窗口,定位到“Windows窗体”,分别将一个TextBox、Button控件拖放到窗体上,如图1-12所示。图1-12添加控件后的窗体11) 再点击“Form1.cs”选项卡(如图1-11所示),再查看代码,可以发现代码中有两个位置发生了变化。l Form1类的定义的前面已添加了两行,如下所示。publicclassprivate System.Windows.Forms.TextBox textBox1;/ 声明TextBox控件对象private System.Windows.Forms.Button button1;/ 声明Button控件
26、对象/<summary>/必需的设计器变量。/</summary>private System.ComponentModel.Container components = null;l InitializeComponent()函数中增加了许多行代码,如下所示。privatevoid InitializeComponent()this.textBox1 = new System.Windows.Forms.TextBox();/ 创建类的实例this.button1 = new System.Windows.Forms.Button();this.SuspendLayo
27、ut();/ / textBox1/ this.textBox1.Location = new System.Drawing.Point(72, 32);/ 初始化实例this.textBox1.Name = "textBox1"this.textBox1.Size = new System.Drawing.Size(112, 21);this.textBox1.TabIndex = 0;this.textBox1.Text = "textBox1"/ / button1/ this.button1.Location = new System.Drawi
28、ng.Point(96, 80);this.button1.Name = "button1"this.button1.Size = new System.Drawing.Size(64, 24);this.button1.TabIndex = 1;this.button1.Text = "button1"/ / Form1/ this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);this.ClientSize = new System.Drawing.Size(292, 173);this.Con
29、trols.Add(this.button1);this.Controls.Add(this.textBox1);this.Name = "Form1"this.Text = "Form1"this.ResumeLayout(false);#endregion即:从工具箱从将控件拖放到窗体上的过程,就是类变为实例的过程。该过程由系统自动完成,不需要人工干预。注意:自动生成的代码不要随意删除,否则可能造成不可预料的严重后果。3 属性窗口的使用界面的设计一般都是在设计阶段完成。通过修改和设置对象的属性,将界面设计成应用程序需要的界面。属性窗口的上部是一个对象
30、下拉式组合框,在该列表框中存放了当前窗体上的所有对象,从中可以选择一个对象作为当前对象;中部为快捷按钮,前面两个用于设置对属性窗口中属性或事件名的排列方式,后两个用于属性选项或事件选项的切换。属性按钮事件按钮图1-13 属性窗口l 修改窗体1) 切换到“Form1.cs设计”选项页,点击窗体的空白处,将窗体设置为当前对象(当前对象的四围出现有八个点包围圈)。2) 单击“视图”“属性窗口”,出现如图1-13所示的“属性”窗口。该窗口上显示有当前对象的设计属性、事件。3) 单击“属性”按钮,在下面将显示当前对象的所有设计属性。4) 每个属性或事件显示为一行,其中左边的为属性或事件名,右边为该属性或
31、事件的对应值。注意,当光标位于某一属性或事件栏时,属性窗口的下面将显示该属性或事件的简要提示。修改相应的属性,观察窗体发生的变化,并记录(使用Alt+PrtScr键将当前窗体送入剪贴板,在需要的地方使用Ctrl+V)。如:将Text属性从“Form1”改为“第一个测试程序”,可以看到窗口标题栏中的标题也已变为“第一个测试程序”。5) 单击“事件”按钮,切换到“事件”选项页。从事件列表中找到“Load”事件,并双击其后的空白位置,系统自动生成窗体Load事件的事件函数框架,并切换到代码窗口,将光标定位在函数的开始处,如图1-14所示。图1-14自动生成的事件框架6) 窗体的Load事件发生在该窗
32、体显示前触发(还没有显示)。因此,可以在窗体显示以前给窗体上的控件做初始化工作。这里先输入this.,集成环境提供的智能感知技术帮助将自动显示,如图1-15所示。图1-15集成环境提供的智能感知技术帮助集成环境提供的智能感知技术帮助,利用该功能,开发人员不必离开代码编辑器就可查找所需的关键信息,直接向代码中插入相关语法元素,甚至可以使用该功能直接完成输入工作。使用该功能可以提供以下方便:l 可以为适当的类、结构、联合或命名空间显示有效的成员变量或函数的列表。通过从该列表中选择某成员,即可将该成员插入到代码中。l 提供有关函数或属性所需参数的数目、名称和类型方面的信息。l 为代码中的任意标识符显
33、示完整的声明。l 当输入了足够的字符以使某变量名、命令名或函数名明确后,智能感知将键入该项的其余部分。l 对放错地方的括号或无终止的代码段提供即时反馈信息。上面输入的this表示将引用类的当前实例(即当前窗体的实例)。因此列表中将显示出与该窗体有关的属性、方法、事件及窗体上的其它对象名。从上面的列表中选择textBox1(即窗体上的输入框对象名),然后按下列代码编写的Load事件:privatevoid Form1_Load(object sender, System.EventArgs e)this.textBox1.Text = ""当在textBox1后输入.时,又会
34、出现智能感知技术帮助,从中选择Text,表示是输入框中的文字。上述语句将该输入框中的文字在窗体显示出来以前清空,为用户输入服务。在Form1_Load()函数中有两个形参,第一个数据类型为object的sender表示触发该事件的对象;第二个参数是数据类型为System.EventArgs的e表示触发该事件时的事件参数,在该事件中一般不用。l 修改输入框textBox11) 切换到“Form1.cs设计”选项页,点击textBox1对象(或在属性上部的对象下拉式组合框中选择textBox1),将输入框设置为当前对象。2) 在属性选项页中修改相应的属性,观察输入框发生的变化,并记录。如在Text
35、属性中输入“abc”,则窗体上输入框的文字将也修改为“abc”。3) 单击“事件”按钮,切换到“事件”选项页。从事件列表中找到“KeyPress”事件,并双击其后的空白位置,系统自动生成输入框KeyPress事件的事件函数框架,并切换到代码窗口,将光标定位在函数的开始处。在函数内输入以下代码:privatevoid textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)if (!(e.KeyChar>='0') && (e.KeyChar<='9
36、39;) | e.KeyChar=0x8)e.Handled = true; /Handled指示是否处理过KeyPress事件,如处理过事件,为true;否则为falsethis.button1.Enabled = this.textBox1.Text="" / 决定按钮能否有效注意:请使用智能感知技术帮助输入其中的KeyChar和Handled。在textBox1_KeyPress()函数中有两个形参,第二个参数是数据类型为的e,表示触发该事件时的事件参数,即与用户键入有关的信息。如KeyChar就是用户输入键(字符)所对应的ASC。可以通过动态帮助查找KeyPress
37、EventArgs类的帮助,方法是:在代码窗口将输入光标移动到textBox1_KeyPress()函数的第二个形参类型KeyPressEventArgs中,然后单击“帮助”“动态帮助”,系统显示如图1-16所示的动态帮助窗口。图1-16动态帮助窗口单击窗口中显示的第一个超链接“KeyPressEventArgs成员”(或第二个),就可打开KeyPressEventArgs成员(或类)的帮助,从该帮助中查到该类的所有信息,其中就有KeyChar和Handled。从这里可以看到,.NET的帮助功能很强,且帮助文字均为中文,可以一目了然地熟悉并掌握所需的信息。l 修改按钮button11) 切换到
38、“Form1.cs设计”选项页,点击button1对象,将按钮设置为当前对象。2) 在属性选项页中修改相应的属性,观察按钮发生的变化,并记录。如在Text属性中原内容“button1”修改为“确定”,则窗体上按钮上的文字将也变为“确定”。3) 单击“事件”按钮,切换到“事件”选项页。从事件列表中找到“Click”(鼠标单击)事件,并双击其后的空白位置,系统自动生成按钮Click事件的事件函数框架,并切换到代码窗口,将光标定位在函数的开始处。在函数内输入以下代码:privatevoid button1_Click(object sender, System.EventArgs e)int i,n
39、;long sum=0;if (this.textBox1.Text.Trim()="") return;/ 输入框为空,直接返回n = int.Parse(this.textBox1.Text);for (i=1; i<= n; i+)sum += i;/ 求累加和MessageBox.Show("1+2+.+"+n.ToString()+"="+sum.ToString();/显示累加和的结果4 编译和运行应用程序只要细心地完成以上各个步骤,那么你建立的第一个应用程序已创建完毕,现在是看看成果的时候了。.NET的程序必须经过
40、编译和连接后才能正常运行,虽然在.NET下使用快捷键<F5>或快捷按钮“启动”或执行菜单中的“调试”“启动”命令可以直接运行程序,但为了养成良好的程序设计习惯,一般在最后应用程序打包以前,先执行菜单中的“生成”“重新生成解决方案”来编译和连接应用程序,然后再进行程序打包。编译时,在主界面的下方(如图1-17中的输出窗口)将出现系统的编译与连接信息,如有错误,可以看到详细的错误信息,单击某条信息,可以定位错误所发生的行。编译完成后,输出窗口中将程序编译是否通过的信息,当出现“全部重新生成: 1 已成功”时,说明程序可以运行,否则将存在错误,需要修改。输出窗口图1-17编译信息输出窗口
41、这里,单击快捷按钮“启动”按钮,程序执行后可以看到如图1-18所示的初始效果。在输入框中输入“100”后,单击“确定”按钮,程序通过MessageBox.Show()显示出相应的累加和,如图1-19所示。图1-18应用程序的初始运行效果图1-19运行结果输入其它数据,观察程序的运行效果,试着修改输入的程序代码,以实现其它功能。四、 思考1. 试着修改窗体的Name属性值后,重新生成解决方案,看出现什么错误?观察错误信息,查看错误的原因,双击错误信息,定位错误处,试修改之。2. 该程序在输入框中只能输入09及回退键(Backspace),为什么?是通过什么技术实现的。目前该输入框只能输入整数,试
42、修改程序,能让它输入一个小数。3. 观察存盘目录中的文件,有几种不同的类型,搞清文件的类型。4. 试着修改在代码窗口修改类名:publicclassForm1,重新生成解决方案,看出现什么错误?从面向对象的角度分析出现错误的原因,并改正。一般在代码窗口不要直接修改类名。实验一.Net系统环境与窗体(续)一、 实验目的1. 了解窗体的概念;2. 掌握窗体重要属性的设置;3. 掌握窗体重要方法的使用;4. 掌握窗体重要事件的使用;5. 掌握模式窗体和无模式窗体使用;二、 实验内容1. 窗体重要属性的设置;2. 窗体重要方法的使用(含模式窗体和无模式窗体);3. 窗体重要事件的使用;三、实验过程1窗
43、体重要属性的设置l TopMost/ 是否将窗体设置为最顶端的窗体l Text/ 窗体标题l StartPosition/ 确定窗体显示的初始位置l Opacity/ 确定窗体的透明度l FormBorderStyle/ 设置 Windows 窗体的边框样式l Icon/ 设置窗口的图标l MaximizeBox、MinimizeBox/ 是否具有最大、最小化按钮l WindowState/ 设置 Windows 窗体的初始状态l AcceptButton、CancelButton/ 设置该窗体的确认和取消按钮l KeyPreview/ 确定窗体上控件的键盘事件是否接受窗体的键盘事件1) 分别
44、设置以上属性,运行程序,观察窗体的变化情况。2) 对于FormBorderStyle属性,(假设其按钮为button14,该程序在实验五中的switch语句部分,只是稍加修改)可以使用以下程序加以验证:privatevoid button14_Click(object sender, System.EventArgs e)int I;string Hint=”;for (I =0; I<7; I+)switch (i)case0:/ 若为0this.FormBorderStyle = FormBorderStyle.Fixed3D;/ 窗体风格Hint =“固定的三维边框。有最大化、最小
45、化、关闭按钮及系统控制菜单,但不能通过拖动窗口边框改变窗口的大小”;break;case1:this.FormBorderStyle = FormBorderStyle.FixedDialog;Hint =“固定的对话框样式的粗边框。有最大化、最小化、关闭按钮,但没有系统控制菜单,也不能通过拖动窗口边框改变窗口的大小”;break;case2:this.FormBorderStyle = FormBorderStyle.FixedSingle;Hint =“固定的单行边框。有最大化、最小化、关闭按钮及系统控制菜单,但不能通过拖动窗口边框改变窗口的大小”;break;case3:this.For
46、mBorderStyle = FormBorderStyle.FixedToolWindow;Hint =“不可调整大小的工具窗口边框。有关闭按钮,但没有系统控制菜单,也不能通过拖动窗口边框改变窗口的大小”;break;case4:this.FormBorderStyle = FormBorderStyle.None;Hint =“无边框。没有标题栏”;break;case5:this.FormBorderStyle = FormBorderStyle.Sizable;Hint =“可调整大小的边框。有最大化、最小化、关闭按钮及系统控制菜单,可以任意改变窗口的大小”;break;case6:t
47、his.FormBorderStyle = FormBorderStyle.SizableToolWindow;Hint =“可调整大小的工具窗口边框。有关闭按钮,可以任意改变窗口的大小,但没有系统控制菜单”;break;MessageBox.Show(Hint);3) KeyPreview属性。在窗体上使用二个textBox控件,并按实验一 .NET系统环境中textBox1控件的textBox1_KeyPress事件代码,编写所有Form的KeyPress事件。代码如下:privatevoid Form1_KeyPress(object sender, System.Windows.For
48、ms.KeyPressEventArgs e)if (!(e.KeyChar>=0) && (e.KeyChar<=9) | e.KeyChar=0x8)e.Handled =true; / Handled指示是否处理过 KeyPress 事件,如果处理过事件,则为 true;否则为 false将KeyPreview属性设置为false;运行程序,在二个textBox控件中输入数据,观察可以输入什么内容。再将KeyPreview属性设置为true;运行程序,在二个textBox控件中输入数据,观察只能输入什么内容。4) 将AcceptButton属性设置为某一个按钮
49、,如button1(该按钮需已编制过其Click事件), 观察该button按钮的外观变化情况。运行程序,直接按回车键,观察程序执行了哪个事件中的代码。5) 将CancelButton属性设置为某一个按钮,如button2(该按钮需已编制过其Click事件), 观察该button按钮的外观变化情况。运行程序,直接按Esc键,观察程序执行了哪个事件中的代码。2窗体重要方法的使用调用窗体的方法在程序设计中十分重要。窗体的重要方法一般有:n Show():将窗体显示为无模式窗体;将自动触发被显示窗体的Load、Activated、事件。n ShowDialog ():将窗体显示为模式窗体;将自动触发
50、被显示窗体的Load、Activated、事件。n Close():关闭当前窗体,若当前是主窗体,则关闭应用程序;将自动触发被显示窗体的Closing、Closed事件。1) 在当前项目中添加一个窗体。在“解决方案资源管理器”中单击某一项目,选择为当前项目。2) 右击该项目,在弹出的快捷菜单中选择“添加”“添加新项”菜单命令,如图6-1所示。3) 出现如图6-2所示的“添加新项”对话框。在“模板”中选择“Windows窗体”,表示创建一个新的窗体;在“名称”输入框中为该窗口输入一个类名,这里为Form3.cs。4) 单击“打开”按钮,系统将创建一个新的空白窗体。假设其Name属性保持不变为Fo
51、rm3(第3步中设置的“名称”)。5) 在Form3窗体上添加一个TextBox控件,其name属性假设为textBox1。添加一个Button控件,其name属性假设为Button1。图6-1 “添加新项”快捷菜单图6-2 “添加新项”对话框6) 返回到主窗体Form1,添加一个Button控件(假设其name属性为button19),编写其的Click事件如下:privatevoid button19_Click(object sender, System.EventArgs e)Form3 Form=new Form3();Form.Show();/ 显示无模式窗体7) 将Button1
52、的Text属性修改为“关闭”。并按下列代码编制该按钮的Click事件:privatevoid button1_Click(object sender, System.EventArgs e)this.Close();/ 关闭窗体8) 运行程序,单击Button19按钮,观察Form3的显示情况。使用鼠标切换到主窗体,观察能否切换,为什么?9) 将Form3显示为模式窗体,其它不变,再执行第8步,运行情况与无模式窗体有何不同。3窗体重要事件的使用窗体的重要事件一般有Load、Activated、Closing、Closed、KeyPress等。首先要清楚这些事件在何时由什么来触发,这点一定要清楚
53、,可以在帮助中得到这些事件的所有说明。n Load:可以使用此事件执行一些初始化工作,如分配窗体使用的资源,窗体控件中文本的清空等任务。n Activated:在使用代码激活或用户激活窗体时触发n Closing:在关闭窗体时触发n Closed:在关闭窗体后触发n KeyPress:在窗体的KeyPreview属性设置为true时,该窗体中输入的所有数据都必须先通过窗体的KeyPress事件的检测,因此可以通过该事件先过滤掉不能在窗体上输入的字符。1) 因在其它窗体中需要使用主窗体Form1中textBox1对象的值,故将Form1的类中定义一个static(静态)变量num:static
54、publicintnum;public表示是公用的。2) 编写textBox1对象的TextChanged事件,将textBox1中的输入传给num:privatevoid textBox1_TextChanged(object sender, System.EventArgs e)if (this.textBox1.Text.Trim()!=”)/因num在类中定义的是static,故访问时应用类名,不能使用实例名Form1.num =int.Parse(this.textBox1.Text);elseForm1.num =100;3) 按下例代码添加From3窗体的Load事件:priva
55、tevoid Form3_Load(object sender, System.EventArgs e)MessageBox.Show(“正在运行Form3的Load事件”);4) 按下例代码添加From3窗体的Activated事件:privatevoid Form3_Activated(object sender, System.EventArgs e)int I, k, sum=0;k = Form1.num;/ Form1为调用当前窗体的窗体类for (I=1;I<=k;I+)sum+=I;this.textBox1.Text = sum.ToString();/ 将累加结果送入textBox15) 按下例代码添加From3窗体的Closing事件:privatevoid Form3_Closing(object sender, System.ComponentModel.CancelEventArgs e)if (int.Parse(this.textBox1.Text)<1000)e.Cancel =true;/ 若textBox1.Text数值小于1000,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026五年级道德与法治下册 社会公德实践
- 2026六年级数学上册 分数乘法估算策略
- 2023学年统编版高二语文选择性必修下册《再别康桥》同练习-统编版高二选择性必修下
- 银川职业规划与发展指南
- 消防活动策划
- 卫生宣教健康教育要点
- 禽畜安全应急预案讲解
- 2023军队文职人员招考笔试《英语语言文学》备考模拟题(含答案)
- 初中校长在2026年春季学期教职工健康促进会上的讲话
- 制冷机组吊装方案 (三)
- 2024部编版初中历史七年纪下全册重点知识点归纳总结(复习必背)
- 《冯谖客孟尝君》
- 2022-2023学年重庆市渝东九校联盟高一(下)期中数学试卷(含解析)
- 《全国应急广播体系建设总体规划》
- 动物免疫学抗感染免疫
- 孙犁《芦花荡》阅读训练及答案
- 地理专业英语词汇大全
- 球罐不开罐检验方法及其相互验证
- NB/T 10744-2021选煤用浮选药剂安全使用管理要求
- GB/T 27476.3-2014检测实验室安全第3部分:机械因素
- 主要园林树木的整形修剪培训课件
评论
0/150
提交评论