浅谈VB6.0实现多窗体交互

开发 后端
这里介绍VB6.0实现多窗体交互,多个窗体之间的交互通常需要借助默认窗体实例来完成。包括介绍保持窗体引用的全局性和.NET 中的数值全局化

在VB6.0等早期版本中,多个窗体之间的交互通常需要借助默认窗体实例来完成。本文向大家介绍VB6.0实现多窗体交互,可能好多人还不了解VB6.0实现多窗体交互,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。下面我将结合某些具体的编程任务来讲解如何在VB6.0实现多窗体交互,希望它能对你的开发任务有所帮助。

1、保持窗体引用的全局性

前面提到,进行 .NET 窗体编程时应该牢牢把握下列原则:在访问窗体之前,你必须进行窗体实例化;如果在项目中有多处代码访问同一窗体,则你必须把它的同一实例指针传递给这些代码。对于早已习惯了直接把默认窗体实例当成全局变量来使用的VB6.0程序员来说,这可是个严重的挑战。好在 .NET 为你提供了两条出路:其一,把窗体实例指针保存在全局变量中;其二,把窗体实例指针传递给任何需要访问它的窗体、类、模块或者过程。

2、.NET 中的数值全局化

我以前曾经指出,Visual Basic .NET 不支持全局变量,现在我又要说,在 .NET 中可以在某种程度上实现数值全局化。这算不算此一时,彼一时?不,我不是那种人。Visual Basic .NET 确实不支持全局变量,然而它借助 Shared (相当于 C# 中的 static) 变量却能模拟全局变量。事实上,前面介绍的 Visual Basic 升级向导自动添加到窗体代码中的 DefInstance 属性就是 Shared 类成员。无论容纳 DefInstance 属性的窗体类是否已经实例化,它都能被项目中的任何代码所引用。象这样的 Shared 属性不就相当于全局变量吗?因此,你可以创建这样的类:

  1. Public Class myForms  
  2. Private Shared m_CustomerForm As CustomerForm  
  3. Public Shared Property CustomerForm() As CustomerForm  
  4. Get  
  5. Return m_CustomerForm  
  6. End Get  
  7. Set(ByVal Value As CustomerForm)  
  8. m_CustomerForm = Value 
  9. End Set  
  10. End Property  
  11. End Class  

你需要在***实例化一个窗体时,把该窗体的实例保存到一个类中:

  1. Dim myNewCust As New CustomerForm()  
  2. myNewCust.Show()  
  3. myForms.CustomerForm = myNewCust  

这里的 CustomerForm 属性值就是你的窗体实例。于是,其它代码就能从项目的任何地方通过它来间接访问你的窗体了:

  1. Module DoingStuffWithForms  
  2. Sub DoExcitingThings()  
  3. myForms.CustomerForm.Text = _ 
  4. DateTime.Now().ToLongTimeString  
  5. End Sub  
  6. End Module  

像这样把窗体实例保存为属性值就能按照你的要求模拟VB6.0中的全局变量。如此模拟的“全局变量”其作用域比类域 (class scope) 高一个层次。所谓类域,是指变量仅仅在定义它的类(确切地说,应该包括模块、类或窗体)中有效。比类域还低一层次的是过程域 (procedure scope),即变量仅仅在定义它的例程中有效。以上介绍VB6.0实现多窗体交互。

【编辑推荐】

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

2009-10-14 14:50:16

VB6.0VB.NET

2009-10-15 17:44:40

VB6.0 datat

2009-10-09 15:26:24

VB6.0开发环境

2009-10-09 16:00:34

VB6.0开发

2009-10-14 15:01:45

VB6.0项目升级

2009-11-10 14:30:33

VB.NET多窗体

2010-01-11 10:44:47

VB.NET多窗体

2009-11-10 15:07:11

VB.NET窗体

2010-01-07 16:51:56

VB.NET窗体钩子

2009-10-10 16:44:52

VB.NET开发控件

2009-10-14 10:25:52

VB.NET读写文本文

2009-10-22 16:46:03

VB.NET初步知识

2009-10-10 17:06:09

VB和VB.NET

2009-10-09 14:37:48

VB开发系统

2009-10-14 12:51:41

VB.NET Data

2009-06-16 10:20:05

多继承C#

2010-01-22 13:08:50

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特殊窗体
点赞
收藏

51CTO技术栈公众号