第17章 Windows应用程序 主要内容 本章主要讲解 Windows编程基础,学习的目标包括:理解图形 用户界面;理解事件驱动的概念;掌握 Windows编程步骤;掌 握基本的窗体、控件、对话框、菜单、工具栏和状态栏编程 掌握鼠标和键盘事件及其编程;了解 Windows编程相关概念
第17章 Windows应用程序 主要内容 本章主要讲解Windows编程基础,学习的目标包括:理解图形 用户界面;理解事件驱动的概念;掌握Windows编程步骤;掌 握基本的窗体、控件、对话框、菜单、工具栏和状态栏编程; 掌握鼠标和键盘事件及其编程;了解Windows编程相关概念
17.1 Windows应用的基本概念 C#可以为 Window操作系统生成多类应用,其中最基本的两 类应用是基于控制台的应用和基于GUI( Graphics User Interface,图形用户界面)的应用。基于控制台的应用程序与 MS-DOS应用程序非常相象。它们的输出是基于文本的,不需 要用户图形界面。尽管在屏幕中基于控制台的应用程序是包 含在一个窗口中的,但窗口中只显示文本字符。基于GU的应 用采用图形界面,可以生成窗口,有菜单驱动,可以用对话 框作为用户界面,并且使用标准的 Window类及其操作。Fie Manager就是典型的基于GU的应用程序的例子。 ■17.1.1 Windows应用的面向对象性 17.12 Windows应用的基本界面 ■17.1.3 Windows应用的输入输出
17.1 Windows应用的基本概念 C#可以为Windows操作系统生成多类应用,其中最基本的两 类应用是基于控制台的应用和基于GUI(Graphics User Interface,图形用户界面)的应用。基于控制台的应用程序与 MS-DOS应用程序非常相象。它们的输出是基于文本的,不需 要用户图形界面。尽管在屏幕中基于控制台的应用程序是包 含在一个窗口中的,但窗口中只显示文本字符。基于GUI的应 用采用图形界面,可以生成窗口,有菜单驱动,可以用对话 框作为用户界面, 并且使用标准的Windows类及其操作。File Manager就是典型的基于GUI的应用程序的例子。 ◼ 17.1.1 Windows应用的面向对象性 ◼ 17.1.2 Windows应用的基本界面 ◼ 17.1.3 Windows应用的输入/输出
17.1.4 Windows应用的事件处理 Windows系统 窗口处理函数 用户动作 键盘输入 消息循环 队列 函数1 函数n 回调 dows系统 类—监听处理 图172消息驱动 用户动作 建盘输入 (注册)事件侦 听 事件处理事件处理 图173事件驱动
17.1.4 Windows应用的事件处理 图17.2 消息驱动 Windows系统 用户动作 键盘输入 消息循环 队列 窗口处理函数 函数1 回调 函数n 回调 …… 图17.3 事件驱动 Windows系统 用户动作 键盘输入 (注册)事件侦 听 类—监听处理 …… 函数1 事件处理 函数n 事件处理
17.2 Windows应用的开发步骤 NET中提供了一系列用于编写基于 Windows的应用程序的类,其中 最主要的是窗口类和控制类。窗口窗体( Windows form)用于创建应 用程序所需的GUI,可以是窗口(Form)、对话框( Dialog)或者 MDI( Multiple document Interface,多文档界面),对话框和多文 档界面分别在17.3和175小节中介绍。窗口类和控制类包含在 System. Windows Forms名空间中 设计和实现 Windows应用的步骤如下: 创建窗体(Form) 如果需要,创建各种控件,并指定各个控件在窗体中的布局 Layout 响应事件:定义GU的事件,不同的控件、窗体对不同事件的处理
17.2 Windows应用的开发步骤 .NET中提供了一系列用于编写基于Windows的应用程序的类,其中 最主要的是窗口类和控制类。窗口/窗体(Windows Form)用于创建应 用程序所需的GUI,可以是窗口(Form)、对话框(Dialog)或者 MDI(Multiple Document Interface,多文档界面),对话框和多文 档界面分别在17.3和17.5小节中介绍。窗口类和控制类包含在 System.Windows.Forms名空间中。 设计和实现Windows应用的步骤如下: 创建窗体(Form) 如果需要,创建各种控件,并指定各个控件在窗体中的布局 (Layout) 响应事件:定义GUI的事件,不同的控件、窗体对不同事件的处理
17.3用户区域的 Windows form控件 ia Test for every kind of child control Exit About listBox and Edit Test checkbox test Checkedlistbox test ProcessBar te 教师工号所开课程 厂允许最大化 厂在任务栏中显示 完成 人加删结果‖停止 我: mcao sut0163com 入翻除」结果|属性外观,「 Every DropDown domainUpDownl 3 ombobox Test 7三 ate and Time Test Each Di alogBox Test 加入 目前选择[205年4月29」 Treeview Test 打开保存浏览 Radio test a Node-0 字体颜色打印 C01edb供应程序 CSa1供应程序 预览设置 你可以使用的状态栏 2005-4-2913:33:47
17.3 用户区域的Windows Form控件
17.3.1文本类控件 文本类控件有两种,一种是能够进行编辑的,另外一种不能编辑, 主要应用于文本显示。文本编辑控件包括 TextBox和 RichTextBox, 前者显示设计时输入的文本,它可由用户在运行时编辑或以编程方 式更改;后者使文本能够以纯文本或RTF格式显示。文本显示控件 则包括Labe和 LinkedLabel,主要区别在于Labe显示用户无法直接 编辑的文本,而 Linkedlabel则将文本显示为Web样式的链接,并在 用户单击该特殊文本时触发事件,该文本通常是到另一个窗口或 Web站点的链接 TextBox和 RichText Box能够接受用户的输入,可以做为用户与应用 程序之间的交互,因此通常处理的是 TextChanged Multiline Changed之类的事件,它表示当用户修改了输入值或者结束 输入时应该做出反应
17.3.1 文本类控件 文本类控件有两种,一种是能够进行编辑的,另外一种不能编辑, 主要应用于文本显示。文本编辑控件包括TextBox和RichTextBox, 前者显示设计时输入的文本,它可由用户在运行时编辑或以编程方 式更改;后者使文本能够以纯文本或RTF格式显示。文本显示控件 则包括Label和LinkedLabel,主要区别在于Label显示用户无法直接 编辑的文本,而LinkedLabel则将文本显示为Web样式的链接,并在 用户单击该特殊文本时触发事件,该文本通常是到另一个窗口或 Web站点的链接。 TextBox和RichTextBox能够接受用户的输入,可以做为用户与应用 程序之间的交互,因此通常处理的是TextChanged、 MultilineChanged之类的事件,它表示当用户修改了输入值或者结束 输入时应该做出反应
17.3.2按钮类控件(1) ■按钮 按钮可以发布命令或者设置值,包括 Button、 CheckBox和 Radio Box Button通常用来启动、停止或中断进程; CheckBox显示一个复选框 和一个文本标签,通常用来设置选项; RadioBox显示一个可打开或 关闭的按钮。 Button通常要处理的是用户按下该按钮的事件,例如, 最简单的动作是按下一个按钮后关闭窗体,其代码如下所示 private void button Click(object sender, System Event Args e) this Close()
17.3.2 按钮类控件(1) ◼ 按钮 按钮可以发布命令或者设置值,包括Button、CheckBox和RadioBox。 Button通常用来启动、停止或中断进程;CheckBox显示一个复选框 和一个文本标签,通常用来设置选项;RadioBox显示一个可打开或 关闭的按钮。Button通常要处理的是用户按下该按钮的事件,例如, 最简单的动作是按下一个按钮后关闭窗体,其代码如下所示: private void button1_Click(object sender, System.EventArgs e) { this.Close( ); }
17.3.2按钮类控件(2) Check Box CheckBox通常用来设置选项,因此通常处理的是 CheckedChanged事 件。例如,一个 CheckBox用来表示是否允许窗体极大化,当它的值 被改变时,根据用户的选择来允许或禁止窗体极大化的代码如下所 private void chk Max Checked Changed(object sender System Event Args e) this MaximizeBox chkDisableMax Checked
17.3.2 按钮类控件(2) ◼ CheckBox CheckBox通常用来设置选项,因此通常处理的是CheckedChanged事 件。例如,一个CheckBox用来表示是否允许窗体极大化,当它的值 被改变时,根据用户的选择来允许或禁止窗体极大化的代码如下所 示: private void chkDisableMax_CheckedChanged(object sender, System.EventArgs e) { this.MaximizeBox = chkDisableMax.Checked ; }
17.3.2按钮类控件(3) Radio Box Radiobox更常见的用法是将几个按钮分为一组,在该组中每次只能选中其中的一 个,根据用户的选择来决定具体的操作。例如,有两个数据库选择的 Radio Box, 个表示选择OeDB数据库,另一个表示选择 SQL Server数据库,则最简单的示 意代码如下 private void OledbB CheckedChanged(object sender, System. EventArgs e) if(Oledb Checked) Message Box. Show"你目前选中的是Oedb供应程序"); Message Box. Show"你目前选中的是Sq供应程序");
17.3.2 按钮类控件(3) ◼ RadioBox RadioBox更常见的用法是将几个按钮分为一组,在该组中每次只能选中其中的一 个,根据用户的选择来决定具体的操作。例如,有两个数据库选择的RadioBox, 一个表示选择Ole DB数据库,另一个表示选择SQL Server数据库,则最简单的示 意代码如下: private void OledbB_CheckedChanged(object sender, System.EventArgs e) { if (OledbB.Checked) MessageBox.Show("你目前选中的是Oledb供应程序"); else MessageBox.Show("你目前选中的是Sql供应程序"); }
17.3.3列表型控件 ,2, 这一类的控件用于从列表中选择,包括 ListBox、 CheckedListBox、 ComboBox、 DomainupDown、 NumericUpDown、 List view、 Tree view和 Datagrid。 ListBox显示一个文本项和图形项(图标)列 表; CheckedListBox显示一个可滚动的项列表,每项旁边都有一个 复选框; ComboBox显示一个下拉式项列表和一个文本编辑框,它 相当于一个 ListBox加上一个 TextBox,用户既可以从下拉列表中选 择一个已有的项,也可以直接在 TextBox中编辑输入新的选项: DomainUpDown显示用户可用向上和向下按钮滚动的文本项列表; NumericUpDown则显示用户可用向上和向下按钮滚动的数字项列表 List view在四个不同视图之一中显示项,这些视图包括纯文本视图、 带有小图标的文本视图、带有大图标的文本视图和详细信息视图。 Tree view显示一个节点对象的分层集合,这些节点对象由带有可选 复选框或图标的文本组成
17.3.3 列表型控件 这一类的控件用于从列表中选择,包括ListBox、CheckedListBox、 ComboBox、DomainUpDown、NumericUpDown、ListView、 TreeView和DataGrid。ListBox显示一个文本项和图形项(图标)列 表;CheckedListBox显示一个可滚动的项列表,每项旁边都有一个 复选框;ComboBox显示一个下拉式项列表和一个文本编辑框,它 相当于一个ListBox加上一个TextBox,用户既可以从下拉列表中选 择一个已有的项,也可以直接在TextBox中编辑输入新的选项; DomainUpDown显示用户可用向上和向下按钮滚动的文本项列表; NumericUpDown则显示用户可用向上和向下按钮滚动的数字项列表。 ListView在四个不同视图之一中显示项,这些视图包括纯文本视图、 带有小图标的文本视图、带有大图标的文本视图和详细信息视图。 TreeView显示一个节点对象的分层集合,这些节点对象由带有可选 复选框或图标的文本组成