VB6的后期绑定和前期绑定

1. 什么是后期绑定和前期绑定后期绑定
  MSDN 6的定义如下:
  后期绑定:若将一个变量声明为 As Object 或 As Variant(包括 As Form 或 As Control 的变量),Visual Basic 在编译时就无法确定该变量将引用哪种类型的对象。因此,Visual Basic 必须使用后期绑定,在运行时确定对象的属性和方法能否使用该变量。
  若使用后期绑定,则每次调用属性或方法时,Visual Basic 都要将成员名传给该对象 IDispatch 接口的 GetIDsOfNames 方法。GetIDsOfNames 返回该成员的派遣 ID,或 DispID。Visual Basic 再将该 DispID 传给 IDispatch 接口的 Invoke 方法来调用该成员。
  对进程外部件而言,这意味着一次额外的跨进程方法调用,结果是调用开销翻番。
  前期绑定:如果在编译时 Visual Basic 能够知道属性或方法所属的对象,就可以预先查找该成员在类型库中的 DispID 或 vtable 地址。这样就无须在运行时调用 GetIDsOfNames。
  当显式声明了变量的类时,例如 As Widget,该变量就只能存放该类的对象的引用。Visual Basic 就可以为该变量调用的所有属性和方法使用前期绑定。
  建议在 Visual Basic 和应用程序中使用这种方法来声明对象变量。
  使用前期绑定还是后期绑定完全取决于声明变量的方式。对象的创建方式对此没有任何影响。
  2. 后期绑定的几个优势和好处
  第一,个人认为,由于VB6不支持实现继承,对于某些设计,可以使用将对象定义为Variant变量,而获取某些设计和编码上的便利,而得到接口或抽象类的好处。例如:
  如定义2个类:

Class1:
1Option Explicit
2
3Public Sub Update()
4        MsgBox "Class1 Updated"
5End Sub
Class2:
1Option Explicit
2
3Public Sub Update()
4      MsgBox "Class2 Updated"
5End Sub

  在使用的时候,可以使用以下方法,而实现一些设计模式:
1Dim objTest As Variant
2
3Dim objC1 As New Class1
4Set objTest = objC1
5objTest.Update
6
7Dim objC2 As New Class2
8Set objTest = objC2
9objC2.Test
10

  这样,无须继承机制,也可以得到抽象接口的优势,而使接口、实现分离。
  第二,在调用外部的COM自动化组件时,如Office,如果通过这种方式调用,对于不同版本的Office,如果你调用的方法、属性都是存在的,那么可以适应不同版本的Office,但如果通过前期绑定,在项目引用中确定对象类型,是有版本兼容问题的。
  3. 效率和劣势
  其实最主要的劣势是效率问题,《Advanced Visual Basic 6》一书说,使用Variant变量和Long变量进行循环,效率差别是1.5倍,而没有别人认为的那么大,而且对于大对象,差别也不是很大。对于本文前边的例子,如果创建的是进程内对象,前期绑定和后期绑定调用效率差别大概2:3左右,也就是说也是1.5倍。对于调用Office这样的外部COM自动化对象,也许差别大一些,没有专门测试,不过对于Office自动化,速度主要是决定于Office本身的启动、初始化。
  另外一个劣势是没有了IDE下的属性、方法成员自动列出。
  所以,个人认为,在使用VB6的时候,为了得到好的设计,有时不妨使用一些VB6的后期绑定的特性,来提高设计质量。
 
 

摘自:网络整理


相关参考


VB查找替代字符串的函数

VB换行气泡提示类

VB/VBA通用路径选择对话框

ASCII码表0-255完整版 附详细注释

VBKeyAscii

VB取得TextBoxRichTextBox光标所在的行和列(支持汉字)

VB取得TextBoxRichTextBox光标所在的行和列(支持汉字)

VB如何实现Undo(撤消)功能

VB计算文本文件的行数

VB获取快捷方式原文件路径

微软 Small Basic 简体中文版 已经发布了

VB操作Excel 非常详细 [网摘]

VB如何判断文件正被占用/已被打开

VB添加listbox 的水平卷动轴

VB打开资源管理器并指定文件

VB根据窗体自动调整窗体内控件大小 注:实用,可以直接引用

VB中的指针技术

Visual Basic编程常见问题及解答(1

Visual Basic编程常见问题及解答(2

Visual Basic编程常见问题及解答(3

VisualBasic变量、常数和数据类型及过程概述

VB6的后期绑定和前期绑定

VB用户控件制作讲解与实例

VB制作OCX控件的步骤

VBFSO的调用的两种方法

VB操作EXCEL

VB判断文件及目录的存在性

VB网站(最新、经典源代码、技术文章、基础知识)

VB得到指定文件夹下的文件列表

VB产生随机任意大小文件挤满硬盘

VB文件的读写操作

VB创建超链接 打开指定网站的几种方法

VB 源码 删除重复行程序 函数

VB 计算自己程序段所用时间

VB 获取路径名各部分 (获取文件路径,获取文件名,获取文件扩展名)自编

几行VB代码拿下注册表

VB 在浏览器中打开指定网址

VB窗口置顶

vb ListBox 之中点击右键弹出菜单

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VB6中,可以通过以下步骤将ListView绑定到TextBox: 1. 首先,确保已经在工具箱中添加了ListView和TextBox控件,如果没有,请在工具箱中右键单击,选择“组件”,然后勾选“Microsoft Windows Common Controls 6.0”,点击“应用”和“确定”按钮。 2. 在窗体上添加一个ListView控件和一个TextBox控件。 3. 在窗体的Load事件中,编写代码以向ListView中添加数据。例如,可以使用ListView的ListItems属性和SubItems属性来添加列表项和子项: ```vb Private Sub Form_Load() ListView1.View = lvwReport '设置ListView的显示模式为报表模式 ListView1.ColumnHeaders.Add , , "名称" '添加列表头 ListView1.ColumnHeaders.Add , , "数值" Dim item As ListItem '定义一个用于添加到ListView中的项 Set item = ListView1.ListItems.Add(, , "项目1") '添加一个列表项 item.SubItems(1) = "数值1" '设置该项的第二个子项的值 Set item = ListView1.ListItems.Add(, , "项目2") item.SubItems(1) = "数值2" End Sub ``` 4. 编写代码,以便在ListView中选择某项时,将该项的值显示在TextBox中。可以使用ListView的SelectedItems属性获取所选择的项,然后将其值赋给TextBox的Text属性: ```vb Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) Text1.Text = Item.SubItems(1) End Sub ``` 5. 最后,为了确保能够调用ItemClick事件,需要在ListView的属性中设置`OnClick = ListView1_ItemClick`。 以上是在VB6中将ListView绑定到TextBox的方法。在窗体加载时,向ListView添加数据,在ItemClick事件中,将所选择的项的值显示在TextBox中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值