300 likes | 459 Views
面向对象程序设计 C#.Net. 09 Windows 程序设计 I. 郑捷 lzj@fjnu.edu.cn 13509354412 http://www.lzj.name. 异常处理. 程序调试技术 异常概念 异常的发生 异常的默认处理形式 编程捕捉异常 异常与函数调用 抛出异常. 程序调试技术简介. 断点 Break Point 单步执行 Step 变量观察 Variable Watch 表达式求值 Expression Evaluation. 程序可能出现的问题. 语法错误(编译错误)和警告
E N D
面向对象程序设计C#.Net 09 Windows程序设计 I 郑捷 lzj@fjnu.edu.cn 13509354412 http://www.lzj.name
异常处理 • 程序调试技术 • 异常概念 • 异常的发生 • 异常的默认处理形式 • 编程捕捉异常 • 异常与函数调用 • 抛出异常 2009-2010-2
程序调试技术简介 • 断点 Break Point • 单步执行 Step • 变量观察 Variable Watch • 表达式求值 Expression Evaluation 2009-2010-2
程序可能出现的问题 • 语法错误(编译错误)和警告 • 由于语法引起的错误,或者由于名称不匹配等引起的错误。在录入、编译的时候就会给予提示 • 出现这种错误时,源代码无法变成可执行文件 • 运行时错误(异常) • 在运行的时候发生的意料之外的情况 • 逻辑错误 • 程序正常运行,但是结论与预期不符合 2009-2010-2
异常 • 异常是程序在运行遇到的任何错误情形或者意外行为 • 这些意外是可预期的,但是无法由编程人员控制是否发生 2009-2010-2
C#的异常处理 • C#采用了大部分面向对象编程语言所采用的try-catch结构来进行异常处理 • 称为结构化异常处理 • 是一种事后捕捉的处理方式 • 即:在try区域中,允许异常发生,在发生后,根据具体情况进行事后补救工作 2009-2010-2
try-catch-finally执行过程 try块 可能发生异常的语句 调用该段代码的地方 正常执行,未发生异常 发生异常,且被捕获处理 发生异常,但是无法被捕获处理 catch块 finally块 2009-2010-2
异常类 • 在catch中,我们可以通过异常类和变量来捕捉不同异常 • 系统定义了一系列的异常类型,用于处理不同的异常情况 2009-2010-2
异常的抛出 throw • 我们可以用throw语句产生异常 • throw语句用于向系统抛出一个异常,抛出后由异常处理机制进行处理 • 事实上,之前所谓的系统异常,都是由被我们调用的函数内部主动抛出的 2009-2010-2
结构化在异常处理中的作用 • 在结构化程序设计中,每个模块对其外围代码而言,是一个整体,一个有输入,有输出,完成特定任务的黑盒 • 这里模块指一个函数,或者只是一段代码 • 外围指调用这个函数的代码,或者这个模块前后的代码等 • 输入、输出对于函数而言主要是参数,以及全局变量,而对于代码段而言,主要是变量 • 有了结构化,程序就清晰了 2009-2010-2
Windows程序设计 • Windows程序设计概念 • 控件布局及其属性 • 代码读写属性 • 消息框的使用 • 更多的控件 2009-2010-2
Windows程序设计 • Windows程序设计,即设计在Windows环境下运行的程序 • 它的基础是一个窗体,在窗体的范围内可以布局各种控件,并且编写相应的代码 • 演示:新建Windows窗体程序 2009-2010-2
注意事项 • 注意区分设计状态和运行状态的窗体 • 一般设计时叫窗体 Form,运行时叫窗口 Window • 注意程序的结构: • 一个解决方案 Solution • 一个项目 Project • 一个主程序文件 Program.cs • 一组窗体程序文件 Form1 2009-2010-2
布局控件 • 可以从工具箱(Toolbox)中拖拉控件到窗体设计界面上。或者在工具箱中点击控件,再在窗体上拖动添加控件 • 通过拖动,进行控件位置、大小的直观定位 • 借住工具栏按钮,可以进行控件的对齐 2009-2010-2
控件属性 • 属性(Property)是控件的相关信息 • 可以通过属性窗格对控件进行调整 • 注意:窗体也是控件,是容器性控件,也有自己的属性!! 2009-2010-2
控件属性 • 名称 • 定位、外观类属性 • 用户输入类属性 • 行为类属性 2009-2010-2
常用控件 • 标签 Label(lbl) • 文本框 TextBox (txt) • 按钮 Button (btn) • 复选框 CheckBox (chk) • 单选按钮 RadioButton (rad) • 组合框 ComboBox (cmb) • 列表框 ListBox (lst) 2009-2010-2
控件命名 • 控件就是窗体上面的变量,所以也要命名! • 当添加控件的时候,系统自动会用序号为控件命名,如button1、textBox1等等 • 建议为界面上面的每个控件命名,命名一般标准为:类型前缀+控件功能 • 如 btnClose关闭按钮 • 前缀一般为控件类型的缩写,常见的见前文 • 也有一些人习惯用后缀命名方式,将类型放后面 2009-2010-2
代码书写 • 在窗体上添加一个按钮,命名为btnHello • 在按钮上双击,进入代码页面 • public partial class frmFirstForm : Form • { • public frmFirstForm() • { • InitializeComponent(); • } • private void btnHello_Click(object sender, EventArgs e) • { • //在这里写你的代码 • } • } 2009-2010-2
代码解析 发生事件的控件 发生了什么事件 函数的参数(不要乱改) • private void btnHello_Click(object sender, EventArgs e) • { • //你的代码所在位置 • } • 这个就是所谓的事件函数,在按钮btnHello被点击(Click)之后,我们所执行的操作就在这里编写。这种方式叫“事件驱动” • 关于事件,详细的下一次介绍 我们的代码,在这个事件发生之后所执行的 2009-2010-2
代码书写 • 在事件中写入代码: • MessageBox.Show("Hello, world!"); • MessageBox是消息框对象,用于显示提示信息等 • Show是它的方法,用来显示信息 • 参数为一个字符串,是要显示的内容 2009-2010-2
读取控件的属性 • 我们可以在事件代码中读取控件的属性 • 尤其是输入型的控件 • 往界面上面再添加一个文本框 txtUserName • 将原来的事件代码改为: • MessageBox.Show("欢迎", txtUserName.Text); • 这里txtUserName是文本框的名字,而它的Text属性则是用户在文本框中输入的文字 2009-2010-2
代码读写控件属性 • 在代码中,可以直接用“控件名.属性名”的方式对控件的属性进行读取和设置 • 一般涉及的是用户在控件中的输入 2009-2010-2
控件的常用属性 • 文本框 TextBox • string Text 用户输入的文字 • 复选框 CheckBox • bool Checked 是否选中该项目 • 单选钮 RadioButton • bool Checked 是否在一系列项目中选中此项 • 标签 Label • string Text 显示给用户看的文字 2009-2010-2
列表框 ListBox • 列表框用来列出一组文字,用户可以在这些项目中选择一个或者多个 • 管理列表框内容 • 读取用户选择的内容 2009-2010-2
组合框 ComboBox • 组合框可以看做列表框和文本框的组合 • 有三种不同模式 • 如何管理组合框内容 • 读取组合框的选择 2009-2010-2
Windows程序设计的一般步骤 • 先构思窗体布局,各个位置,使用什么控件,获取什么类型的信息 • 在窗体上实现静态的构思 • 编写代码,写事件响应流程 2009-2010-2
Windows程序设计 • Windows程序设计概念 • 控件布局及其属性 • 代码读写属性 • 消息框的使用 • 更多的控件 2009-2010-2
预习 • 控件的事件 • 委托 2009-2010-2
实验 • 根据要求设计Windows窗体,摆放控件并编程实现点击按钮后显示信息 2009-2010-2