2、打开工程属性窗口,设置启动对象
将启动对象改为Form2:
启动程序,看看是不是Form2出现在屏幕上。
注意,要保存模块、窗体和工程文件到指定位置。
单击工具栏上【保存】按钮,弹出【文件另存为】对话框:
利用多文档窗口界面实现同时打开多个文档进行编辑。建立一个MDI窗体,为窗体增加菜单栏。“文件”菜单下有“新建”和“退出”两个子菜单,建立一个子窗体,在里面添加一个TextBox控件,用于编辑文本。
1、创建工程,更名为“演示多文档界面”,移除默认的窗体Form1
2、添加MDI窗体,更名为frmMain,标题设置为“演示多文档界面”
(1)要使窗体frmChild成为frmMain的子窗体,必须设置MDIChild属性为True
看一看,在工程资源管理器窗口里,frmMain和frmChild的图标刚好相反:
(2)在子窗体里添加一个文本框
名称属性设置为“txtContent”
Text属性设置为空
MultiLine属性设置为True
ScrollBars属性设置为2(垂直滚动条)
5、编写主窗体菜单单击事件处理过程
6、编写子窗体frmChild的Resize事件过程
7、在工程属性对话框里,设置启动对象为frmMain
8、运行程序,测试效果
单击【文件】菜单下的【新建】选项:
再单击【文件】菜单下的【新建】选项:
三、VB工程结构
Sub Main过程是在标准模块里定义的,可以设置为启动对象。
四、闲置循环与DoEvents 语句
1、DoEvents概述
DoEvents,转让控制权,以便让操作系统处理其它的事件。
DoEvents 函数会返回一个 Integer,以代表 Visual Basic 独立版本中打开的窗体数目,例如,Visual Basic,专业版,在其它的应用程序中,DoEvents 返回 0。DoEvents 对于简化诸如允许用户取消一个已启动的过程 — 例如搜寻一个文件 — 特别有用。对于长时间过程,放弃控制权最好使用定时器或通过委派任务给 ActiveX EXE 部件来完成。以后,任务还是完全独立于应用程序,多任务及时间片由操作系统来处理。
2、使用DoEvents
(1)场景——窗体启动时事务太多或者使用Sleep函数暂停,导致窗体迟迟不能显示出来。
启动程序,看到的不是窗体,而是一片矩形区域:
过了5000毫秒,才显示窗体,以及上面输出的字符串。
这个体验显然不好,怎么处理呢?在Show语句之后加一个DoEvents语句,将控制权移交给操作做系统。
运行程序,看看有什么不同?
首先看到窗体:
5000毫秒之后,看到打印在窗体上的字符串:
采用了DoEvents语句,改善了启动窗体时的用户体验。
(2)场景——有个很耗时的循环导致程序不响应
运行程序,单击Command1,你会等待很久才会看到窗体输出“二级VB培训”。关键在于,在等待期间,用户什么操作也不能干,就是对用户不响应,这个体验是大大地不好。利用DoEvents语句,就可以改善用户体验。
(3)场景——想在循环中看到处理过程
启动程序,单击【Command1】按钮,并没有在Text1框里动态显示循环变量count的值,而是要等着循环结束时才会执行Text1.Text = count,在文本框里显示结果100000。
启动程序,单击【Command1】按钮,你会看到文本框里的数字在不断变化。