从VB6.0到VB.NET中的变化差异

本文深入探讨了从VB6到VB.NET的变化,特别是从面向过程到面向对象的转变,以及命名空间概念的引入如何通过imports关键字简化了代码的组织与访问。此外,文章还对比了OCX控件与COM组件在VB.NET中的整合,阐述了.NET框架如何将这些组件封装为类,从而提供了更便捷的引用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   VB6到VB.NET变化中体现出来的最直接的差异就是从面向过程跃升到了真正的面向对象层面,竟然就有了VB跟VC的真正对比

 

   imports 和 using的比较

   在VB.NET中出现了命名空间的概念,进而相对于using出现了imports关键字,他的作用主要是

1、将后面命名空间中所有的名字导入到当前命名空间 
2、为后面的名字取一个当前命名空间可以访问的别名。 

  

   OCX控件,COM组件以及.net框架下的比较

   在VB.NET中,不再有OCX控件转而变成了COM组件,让这个封装更便捷的表现出来的就是.net框架,它将一个个封装映射到了一个个封装类中,我们只要进入类中就可以很方便的引用这些曾经的OCX控件,而不需要加载这些控件。   

首先:Imports System.Runtime.InteropServices 然后: Private Declare Function EbExecuteLine Lib "VBA6.DLL" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long ' <DllImport("VBA6.DLL", EntryPoint:="EbExecuteLine", SetlastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> Public Shared Function EbExecuteLine(ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long '<DllImport("D:\vba6.dll", CharSet:=CharSet.Ansi, SetlastError:=True)> Public Shared Function EbExecuteLine(ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long 'End Function '<DllImport("vba6.dll", CharSet:=CharSet.Ansi, SetlastError:=True)> 'Public Shared Function EbExecuteLine(ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long 'End Function '定义StrPtr函数,实现获取字符串地址功能 Private Function StrPtr(ByVal e As Object) As Int32 Dim GC As System.Runtime.InteropServices.GCHandle = System.Runtime.InteropServices.GCHandle.Alloc(e, System.Runtime.InteropServices.GCHandleType.Pinned) Dim GC2 As Int32 = GC.AddrOfPinnedObject.ToInt32 GC.Free() Return GC2 End Function Function ExecuteLine(ByVal sCode As String, Optional ByVal fCheckOnly As Boolean = True) As Boolean ExecuteLine = EbExecuteLine(StrPtr(sCode), 0, 0, 0) End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim dm() As String Dim i As Long dm = Split(TextBox.Text, ";") For i = 0 To UBound(dm) If Len(dm(i)) <> 0 Then Dim Result As Boolean Result = ExecuteLine(dm(i)) If Result = False Then Debug.Print(i + 1 & vbTab & "行执行错误") Else Debug.Print(i + 1 & vbTab & "行代码错误") End If Next End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值