详解VB6.0和VB.NET窗体的区别

开发 后端
这里介绍VB6.0和VB.NET窗体的区别,窗体(窗体类)正如其它类一样,无论在哪个版本的 Visual Basic 中都是必不可少的。窗体也有属性、方法和事件,且在同一个项目中也允许创建多个窗体实例。

VB6.0和VB.NET还是比较常用的,于是我研究了一下VB6.0和VB.NET得区别,在这里拿出来和大家分享一下,希望对大家有用。

VB6.0对VB.NET

窗体(窗体类)正如其它类一样,无论在哪个版本的 Visual Basic 中都是必不可少的。窗体也有属性、方法和事件,且在同一个项目中也允许创建多个窗体实例。例如:假设你在 VB6.0项目中定义了一个窗体 Form2 ,则你可以创建它的 3 个实例并同时显示出来。代码如下:

  1. Dim myFirstForm As Form2  
  2. Dim mySecondForm As Form2  
  3. Dim myThirdForm As Form2  
  4.  
  5. Set myFirstForm = New Form2  
  6. Set mySecondForm = New Form2  
  7. Set myThirdForm = New Form2  
  8.  
  9. myFirstForm.Show  
  10. mySecondForm.Show  
  11. myThirdForm.Show  

以上代码用 3 条 Set 语句生成了 3 个 Form2 实例。你可以把它原封不动地搬到VB.NET中运行,它照样能够正确显示 3 个 Form2 窗体。在这里,“Form2” 其实相当于一个普通的类。VB6.0允许代码直接访问尚未实例化的窗体类;然而VB.NET却规定在访问任何类之前都要进行实例化,而且必须借助实例来访问类。这种变化当然有可能造成许多疑惑。VB6.0等早期版本能自动生成每个窗体的默认实例,从而允许直接通过窗体名称来访问窗体。例如:在VB6.0项目中,可以直接用代码“Form2.Show ”显示 Form2 的默认实例;然而在VB.NET中,这么做只会引发错误,因为VB.NET既不会创建默认的窗体实例,也不允许直接访问尚未实例化的窗体类。

这就是VB.NET与早期 Visual Basic 在窗体处理机制上的关键区别——你只有先创建窗体实例,然后才可以显示窗体外观、访问窗体属性及其控件。它们还有另一个区别:VB6.0项目自动创建的默认窗体实例都能被当成全局变量使用,也就是说,项目中的任何代码都能直接引用窗体,并且每次被引用的都是该窗体的同一个实例。例如:你可以在窗体中 button 控件的 Click 事件处理程序里用代码 “Form2.Show” 显示 Form2 窗体,然后用下列代码改变 Form2 中某个 textbox 控件 (TextBox1)的内容:

  1. Form2.TextBox1.Text = "Fred"  

可是,你在VB.NET中运行它却会得到一条错误消息:“Reference to a Non-Shared Member Requires an Object Reference”(引用非共享类成员必须使用对象指针)。这是在提醒你:你正在访问的类尚未进行实例化。有一个简便的解决方案:当你在调试过程中得到上述错误消息时,就把相应的语句:

  1. Form2.Show()  

改成:

  1. Dim myForm2 As New Form2()  
  2. myForm2.Show()  

此方案适用于大多数场合。然而,当项目中还有其它代码访问同一个 Form2 实例 (比如改变其中 TextBox1 的文本) 时,你可能会考虑把下列语句:

  1. Form2.TextBox1.Text = "Fred" 

改成:

  1. Dim myForm2 As New Form2()  
  2. myForm2.TextBox1.Text = "Fred"  

不幸的是,这段代码创建了一个新的 Form2 实例,结果你所访问的窗体不再是原先的 Form2 ,这岂不麻烦了!更坏的是,你不会因此而得到任何错误消息提示,同时你先前调用 Show() 显示的 Form2 窗体也不会发生任何变化。

【编辑推荐】

  1. 简单描述VB.NET散列函数
  2. 详细分析VB.NET读写文本文件
  3. VB.NET GroupBox控件学习经验
  4. 概括VB.NET DomainUpDown控件
  5. VB.NET编码算法学习笔记
责任编辑:佚名 来源: 博客园
相关推荐

2009-10-09 16:00:34

VB6.0开发

2009-10-14 15:11:28

VB6.0实现多窗体交

2009-11-02 17:12:01

VB和VB.NET

2009-10-10 17:06:09

VB和VB.NET

2009-10-15 17:44:40

VB6.0 datat

2009-10-29 14:02:24

VB和VB.NET比较

2009-10-09 16:54:03

VB.NET窗体

2009-10-14 15:34:29

VB.NET窗体编程模

2009-10-14 15:20:21

VB.NET窗体指针

2010-01-11 15:12:30

VB.NET特殊窗体

2009-10-14 13:56:05

VB.NET数据窗体

2010-01-13 09:31:39

VB.NET窗体打印

2009-10-16 09:35:24

VB.NET制作透明窗

2009-10-09 15:26:24

VB6.0开发环境

2010-01-21 17:34:48

VB.NET Bool

2010-01-12 18:35:43

VB.NET Stru

2009-10-20 17:38:54

VB.NET Comp

2009-10-10 16:44:52

VB.NET开发控件

2009-10-26 17:53:50

VB.NET新窗体

2009-11-10 15:07:11

VB.NET窗体
点赞
收藏

51CTO技术栈公众号