第09章 多重窗体与环境应用.ppt_第1页
第09章 多重窗体与环境应用.ppt_第2页
第09章 多重窗体与环境应用.ppt_第3页
第09章 多重窗体与环境应用.ppt_第4页
第09章 多重窗体与环境应用.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

第9章多重窗体与环境应用 9 1多重窗体 9 2VisualBasic工程结构 9 1多重窗体 9 1 1多重窗体管理 9 1 2设置启动窗体 9 1 3窗体处理 9 1 4多重窗体应用实例 9 1 1多重窗体管理1 向工程中添加窗体向工程中添加新窗体有以下三种方法 选择 工程 添加窗体 菜单 在打开的 添加窗体 对话框中 选择 窗体 打开 即向工程中添加一个新窗体 新窗体的默认名称和标题 Caption属性 均由集成开发环境自动排列确定 如第二个创建的窗体 其默认的名称为Form2 标题为Form2 从工具栏上选择 添加窗体 按钮 向工程中添加一个新窗体 在工程资源管理器中选定 工程 单击右键打开快捷菜单 选则 添加 添加窗体 选项 也可创建一个新窗体 2 移除工程中的窗体移除工程中多余的窗体有以下两种方法 在工程资源管理器窗口中选定要删除的窗体 选择 工程 移除窗体 菜单项 在工程资源管理器中选中要删除的窗体 单击右键弹出其快捷菜单 选取 移除窗体 选项 3 保存窗体在多重窗体应用程序中 每个窗体都要单独保存 方法同单一窗体应用程序一样 在工程资源管理器窗口中选定要保存的窗体 选择 文件 保存窗体 菜单或 窗体另存为 菜单 或者在工程资源管理器中打开快捷菜单 选取 保存窗体 或 窗体另存为 选项 每个窗体保存后都生成一个扩展名为 frm 的文件 9 1 2设置启动窗体在多重窗体应用程序中 由于应用程序由多个窗体组成 就是由多个界面组成 因此在程序开始运行时 必须有一个窗体是首先出现的 即启动窗体 VB集成开发环境在创建新工程时 把窗体Form1作为系统缺省的启动窗体 如果用户在实际应用或在调试程序中希望把某个窗体作为启动窗体 在程序运行时首先出现在屏幕上 可用以下方法实现 选择 工程 工程属性 菜单 在 工程属性 对话框中选中 通用 选项卡 在 启动对象 下拉列表中显示了该工程所有的窗体和 SubMain 过程 用户可以根据需要进行选择 若选用SubMain过程作为启动对象 则在程序启动时不加载任何窗体 而是运行一个SubMain过程 然后根据程序代码来决定是否加载窗体或加载哪一个窗体 9 1 3窗体处理在使用相关语句和方法前 大家有必要先了解窗体在应用程序中的三种存在形式 没有被加载 这时 窗体虽然是应用程序的构件 但并没有正式成为项目的组成部分 即窗体不会占用系统资源 加载但没有显示 这时 窗体已经被加载 成为项目的组成部分 但并没有显示出来 加载并显示 这时 窗体已经被正式显示出来 当然窗体一定要被加载后才能显示出来 如果应用程序中只有一个窗体 在程序运行时这个窗体会被自动加载并显示出来 如果应用程序由多个窗体组成 则会有一个窗体被设置为启动窗体 在程序运行时启动窗体同样被自动加载并显示 而其他的窗体则必须在已经启动的窗体中进行加载或显示 这就要用到下面几个相关语句和方法 1 Load语句格式 Load该语句用于将一个窗体装入内存 执行Load语句后 窗体处于 加载但没有显示 状态 此时可以引用窗体中的控件及各种属性 但窗体没有显示出来 2 Unload语句格式 Unload该语句用于卸载内存中指定的窗体 与Load语句的功能相反 执行Unload语句后 窗体处于 没有被加载 状态 不会占用系统资源 注 应用程序结束后 应卸载所有的窗体 否则会出现这种现象 即应用程序虽已表现为结束状态 但实际上某个窗体仍处于隐藏状态 并占用一定系统资源 Windows系统本身不会自动处理此类问题 这对于程序的运行是极为不利的 为了避免这种情况 应在结束程序前使用Unload语句将窗体从内存中删除 3 Show方法格式 窗体名称 Show 模式 该方法用于显示一个窗体 执行Show方法后 窗体处于 加载并显示 状态 窗体名称 可选项 缺省时为当前窗体 模式值 可选项 取值0 默认值 或1 用以决定窗体是非模态还是模态 模式值为0时 窗体为非模态 此时用户可对其他窗体进行操作 模式值为1时 窗体为模态 此时用户不能对其他窗体进行操作 直到该窗体关闭为止 注 该方法兼有装入和显示窗体两种功能 也就是说 在执行Show方法时 如果窗体没有装入内存 则执行时Show方法会自动把窗体装入内存 然后显示出来 4 Hide方法格式 窗体名称 Hide该方法用于将窗体隐藏起来 执行Hide方法后 窗体处于 加载但没有显示 状态 即窗体仍在内存中 但窗体没有显示出来 与窗体卸载有本质的区别 9 1 4多重窗体应用实例和单一窗体的程序设计一样 多重窗体程序设计也基本上分为5步 设计界面 设置属性 编写代码 调试运行 保存程序 关键的问题是作为一个完整的工程 如何把多个窗体 组装 起来 并根据程序功能实现窗体间的切换 下面通过一个简单的例子进行说明 例9 1设计一个手机话费查询系统 包含三个窗体 即 欢迎 窗体 手机号码 窗体和 密码 窗体 三个窗体功能如下 1 欢迎 窗体为封面窗体 运行时首先显示 单击 单击此处进入 按钮时 打开 手机号码 窗体 欢迎 窗体消失 2 在 手机号码 窗体中输入手机号码后 单击 确定 按钮 则打开 密码 窗体 手机号码 窗体消失 若单击 返回 按钮 则返回 欢迎 窗体 3 在 密码 窗体中输入密码后 单击 确定 按钮 只要密码非空则显示剩余话费 若单击 查询下一个 按钮 则返回 手机号码 窗体 若单击 返回 按钮 则返回 欢迎 窗体 通过该例可以发现 多重窗体应用程序中 通过相关按钮的设置 实现窗体的显示与隐藏 从而将多个窗体连接成一个有机的整体 第一个窗体 第二个窗体 第三个窗体 Form1代码 PrivateSubCommand1 Click Form2 ShowForm1 HideEndSub PrivateSubCommand1 Click IfText1 Text ThenForm3 Show Form2 HideEndSubPrivateSubCommand2 Click Form1 ShowForm2 HideEndSub Form2代码 PrivateSubCommand1 Click IfText1 Text ThenText2 Text 话费 EndSubPrivateSubCommand2 Click Form2 ShowForm3 HideEndSubPrivateSubCommand3 Click Form1 ShowForm3 HideEndSub Form3代码 9 2VisualBasic工程结构 9 2 1标准模块 9 2 2窗体模块 9 2 3SubMain过程 9 2 4闲置循环与DoEvents语句 9 2 1标准模块在单一窗体应用程序中 所有的代码都存放在一个窗体模块中 而在多重窗体应用程序中 每个窗体对应一个窗体模块 有些公共变量或通用过程需要在多个窗体中共用 这就需要创建标准模块 标准模块由全局变量声明 模块级声明及通用过程等几部分组成 标准模块文件的扩展名为 bas 在标准模块中 全局变量用Public声明 模块级变量用Dim或Private声明 当需要声明的全局变量或常量较多时 可以把全局变量声明放在一个单独的标准模块中 一个工程文件可以包含多个标准模块 也可以把原有的标准模块加入工程中 当一个工程中含有多个标准模块时 各模块中的过程不能重名 向工程中添加标准模块有以下三种方法 选择 工程 添加模块 菜单 在打开的 添加模块 对话框中 选择 模块 打开 即向工程中添加一个标准模块 标准模块的默认名称为Module1 从工具栏上单击 添加窗体 按钮右侧的下拉箭头 在弹出的列表中选择 添加模块 选项 在工程资源管理器中选定 工程 右击打开快捷菜单 选取 添加 项下的 添加模块 选项 也可创建一个标准模块 创建标准模块后会打开一个标准模块窗口 即可进行公共变量 常量 类型 外部过程和公共过程的声明 9 2 2窗体模块应用程序中的每个窗体都有一个包含其代码的窗体模块 窗体模块包括3部分内容 即通用声明部分 通用过程部分和事件过程部分 窗体模块文件的扩展名为 frm 如果在文本编辑器中观察窗体模块 则还会看到窗体及其控件的描述 包括它们的属性设置值 在窗体模块的通用声明部分中 用Dim语句声明的变量 其作用域为整个窗体模块 即该模块中的所有过程 通用声明部分一般放在代码的最前面 而通用过程和事件过程的位置没有严格的限制 在窗体模块中 可以调用标准模块中的过程 也可以调用其它窗体模块中的过程 注意 被调用的过程必须用Public定义为公共过程 标准模块中的过程 可直接调用 若调用其它窗体模块中的过程 则必须加上过程所在的窗体名 9 2 3SubMain过程SubMain过程是在标准模块中建立的过程 通常是作为启动过程编写的 若选用SubMain过程作为启动对象 则在程序启动时不加载任何窗体 而是运行一个SubMain过程 然后根据程序代码来决定是否加载窗体或加载哪一个窗体 1 没有启动窗体时的启动有时候也许需要应用程序启动时不加载任何窗体 例如 可能想先运行装入数据文件的代码 然后根据数据文件的内容决定显示几个不同窗体中的哪一个 要做到这一点 可以在标准模块中创建一个名为Main的子过程 如下面的例子所示 SubMain DimintStatusAsInteger 调用一个函数过程来检验用户状态intStatus GetUserStatus 根据状态显示某个启动窗体IfintStatus 1ThenfrmMain ShowElsefrmPassword ShowEndIfEndSub 需要注意的是 SubMain过程必须在标准模块中创建 不能在窗体模块内 一个工程可以含有多个标准模块 但SubMain过程只能有一个 SubMain过程通常是作为启动过程编写的 但是VisualBasic并不能够自动识别SubMain过程 也就是说 并不自动把它作为启动过程 若将SubMain过程设为启动对象 需要选择 工程 工程属性 菜单 在 工程属性 对话框中选中 通用 选项卡 在 启动对象 下拉列表中选定 SubMain 2 显示启动时的快速显示如果启动时有一个较长的执行过程 例如要从数据库中装入大量数据或者要装入一些大型位图 这时可能希望在启动时给出一个快速显示 快速显示是一个窗体 它通常显示的是诸如应用程序名 版权信息和一个简单的位图等内容 启动VisualBasic时所显示的屏幕就是一个快速显示 当一些启动例程正在执行时 快速显示能吸引用户的注意 造成应用程序装载很快的错觉 当这些启动例程完成后 可以装载第一个窗体并卸载快速显示 对于快速显示的设计 应尽量简单为好 如果使用大量位图或者大量控件 则快速显示本身装载将会变慢 若要显示快速显示 需要将SubMain过程作为启动对象 并用Show方法显示该窗体 PrivateSubMain frmSplash Show 显示快速显示 在此处添加启动过程 frmMain Show 显示主窗体UnloadfrmSplash 卸载快速显示EndSub 例9 2设计一个 古诗选读 程序 该程序由7个窗体组成 分别为快速显示窗体 封面窗体 列表窗体以及4个用来显示古诗内容的窗体 程序运行后 在装载数据时显示快速显示窗体 然后显示封面窗体并卸载快速显示 接着显示列表窗体 在该窗体中列出所要阅读的古诗目录 4个 双击某个目录后 在另一个窗体的文本框中显示相应的诗文内容 9 2 4闲置循环与DoEvents语句VisualBasic属于事件驱动型语言 即只有当发生某个事件时 才执行相应的程序 否则 应用程序会处于 闲置 状态 另一方面 当VisualBasic执行一个过程时 将停止对其它事件 如鼠标事件 的处理 直至执行完EndSub或EndFunction指令为止 为了改变这种执行顺序 VB提供了闲置循环 IdleLoop 和DoEvents语句 闲置循环就是当应用程序处于闲置状态时 用一个循环来执行其它操作 简言之 闲置循环就是应用程序在闲置状态下执行的循环 但执行闲置循环又会占用全部CPU时间 不允许执行其它事件过程 为此 VisualBasic提供了一个DoEvents语句 无论何时 一执行到DoEvents语句 就会把系统的控制权交给周围环境使用 然后再回到原来程序继续执行 DoEvents既可以作为语句使用 也可以作为函数使用 作为函数使用时 返回值为当前装入VisualBasic应用程序工作区的窗体号 如果不想使用这个返回值 则可以随便用一个变量接收返回值 DoEvents语句格式为 DoEventsDoEvents函数格式为 窗体号 变量名 DoEvents 例9 3编写程序 试验闲置循环和DoEvents语句 窗体上

温馨提示

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

评论

0/150

提交评论