计算机二级VB辅导:失踪的窗体计算机等级考试

文章作者 100test 发表时间 2010:01:01 10:54:28
来源 100Test.Com百考试题网


  两个窗体:Form1与Form2。Form1上的按钮为: Command1,Form2上的按钮为: Command2
  Private Sub Command1_Click()
  Me.Hide
  Form2.Show
  End Sub
  Private Sub Command2_Click()
  Me.Hide
  Form1.Show
  End Sub
  于是,我毫不犹豫地在VS.NET中内开始我的第一个VB.NET的项目了。首先,新建了一个VB.NET的Windows应用程序项目,自动生成了一个Windows Form:Form1,在其上加入一个按钮控件:Button1;然后,添加了一个Windows Form:Form2,在其上加入了一个按钮控件:Button2。
  在设计窗口双击Button1后,编译器会切换到代码窗口的Button1的单击响应代码中。
  在代码段中故计重施,当我想写Form2.Show时,在Form2之后打个点,出现的智能感知菜单中,却没有Show这一方法。真奇怪,这怎么可能?难道VB.NET改动有这么大。我抬头看了看站在我身旁的大李。
  大李立刻面露微笑,看来是正中他的圈套。他手指向屏幕,点了点Form1中的代码的开头处:
  Public Class Form1
  Inherits System.Windows.Forms.Form
  不笨的我立刻就明白了,现在的Form1是一个从System.Windows.Forms.Form继承下来的类了,调用的时候当然需要先实例化了,哈,也不难嘛。马上动手:
  Private Sub Button1_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles Button1.Click
  Me.Hide()
  Dim frm2 As New Form2() ‘实例化Form2类,得到一个对象
  frm2.Show()
  End Sub
  在Form2的Button2的单击事件中也相似地写了一段代码,运行一下,和VB6的效果差不多了。正在得意中,大李走过来,在我的Form1中添加了一个文本框textbox1,清空其中的文字。然后运行了一下程序。在运行中,他在文本框里写了几个字:“Henry的作品”,然后点击Button1切换到Form2,接着点击Button2,重新出现的Form1的文本框中却变成了空白。
  “这……”我一时语塞,慢慢地想起点什么,“应该是程序通过New构造方法,每次点击按钮都会重新实例化一次Form类吧?所以每次重新出现的窗体都不是以前曾经出现过的那个。那以前的窗体也就失踪了,调不出来了。”
  “失踪?”大李不禁笑了起来,“对呀,失踪在内存中。你每实例化一次,系统就会开辟一块内存给一个对象,并会有相应的线程对其进行控制与管理。如果作为进程中主线程的第一个Form1被Hide起来,没有关闭它,那么即使你关闭后来新创建的所有窗体,进程也不会被中止。那么,用什么方法去找回你失踪的窗体,或者说怎么样就只使用一个对象,不再每次实例化呢?”
  “全局对象!”我脱口而出,感觉到大李不置可否,只好硬着头皮继续说:“利用全局变量,使Form1与Form2只实例化一次,这样就可以了。”
  然后,在大李的注视下,我开始实施我的计划:
  再创建一个模块文件:module1.vb,并且同时在:
  解决方案管理器-〉项目名.sln -〉右点鼠标 -〉属性 -〉通用属性-

相关文章


计算机二级VB辅导:类和结构计算机等级考试
计算机二级VB辅导:共享成员计算机等级考试
计算机二级VB辅导:构造与析构计算机等级考试
计算机二级VB辅导:类的继承计算机等级考试
计算机二级VB辅导:失踪的窗体计算机等级考试
JAVA的三个移位运算符计算机等级考试
Java操作符的优先级和结合性计算机等级考试
J2ME游戏APIのGameCanvas游戏画布计算机等级考试
EffectiveJava核心实战编程思想计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛