我以前都是用C#来写,这次搞这个VB.NET项目,有点突然。还好语言都是相通的。
1.虽说以前的Microsoft Visual Basic和.NET都是微软自己的东西,可有很多功能的实现方式还不一样,特别是那些控件。
2.每个程序都会有自己的业务逻辑,有些可能会很复杂,甚至读别人的代码时你可能对业务逻辑那部分会完全一头雾水。
开始也打算在.NET环境下重做,可在做了一些尝试后发现根本没法了解那个VB6.0程序的业务逻辑,以致于从VB6.0转换到.NET下后,那些老的graph控件没法工作。和项目经理做了很多研究后,还是决定先让Microsoft Visual Studio替我们先把VB6.0项目转换生成一个VB.NET项目,然后在这基础上改。事实证明,这种做法很明智,因为相比在.NET环境下重做会少写很多代码,而且你几乎不用去管那个项目的业务逻辑。废话少说,下面介绍升级过程。
1.在机子上安装Microsoft Visual Basic,我用的是Microsoft Visual Basic 6.0中文企业版。作用有两个:(1)确保以前的VB项目能正常工作.(2)方便以后能回到这个老项目中进行一些调试。
2.打开你的Microsoft Visual Studio,接着执行File-Open-Project/Solution,在弹出的对话框找到将被转换的.vbp工程文件,选中并打开它。此时会弹出Visual Basic Upgrade Wizard。在这个过程你需要指定被转换过来的项目的位置以及项目类型。因为我这个是桌面程序,所以我选择了.exe类型。参数准备完后,IDE会需要比较长的时间来完成升级过程。
3.转换完成后,你会发现IDE提示了很多代码的错误。其实很多VB6.0里面的老控件都已经被Visual Studio转换过来了,或者Visual Studio里已经以其它相似的名字内置了对VB6.0老控件的支持。
有一点VB6.0里的DBGrid控件会被转化成.NET下
vb.net教程
的AxMSDBGrid.AxDBGrid类型的控件,这种控件在VB6.0里需要Data控件作为数据源。.NET已完全抛弃了Data控件,不再提供对它的直接支持,而选用了性能更高的ADO.NET组件。开始我们本打算原封不动的用转换过来的控件,后来发现这个AXDBGrid控件的DataSource属性必须要是一个ICursor,而当今现存的数据源控件除了Data控件都无法提供这个ICursor接口属性,但这个Data控件在.NET中是无法使用的。
最后不得已选用了.NET下标准的数据显示控件DataGridView,并用以下代码模拟出Data控件。
1 Public Solar As DAO.Recordset
2 ModelData = DAODBEngine_definst.Workspaces(0).OpenDatabase(Application.StartupPath + "\Cmpnents.mdb", False, False, "MS Access;PWD=" & pssss)
3 Solar = ModelData.OpenRecordset("SELECT * From SMake", DAO.RecordsetTypeEnum.dbOpenDynaset)
对上面的代码我得说明下:
1.DAODBEngine_definst是.VB文件中一个Module里声明的对象。代码如下:
Module UpgradeSupport
Friend DAODBEngine_definst As New DAO.DBEngine
End Module
2.其中DAO命名空间在dao360.dll中(你需要用regsvr32.exe注册该DLL,然后把它以COM组件的形式引入到自己的项目中),而VB中只能使用DAO350.DLL。
3.这里选用DAO.Recordset而不选用其它数据源是因为该对象本身提供了几乎Data控件所具有的所有方法,像MoveFirst(),MoveLast(),MoveNext()等方法,这样就可以减少对升级后的代码修改。
4.Recordset对象是无法直接作为DataGridView的数据源的,必须先把转化为DataTable对象,再把它作为DGV的数据源,转换代码如下:
1 Function RecordsetToDataTable(ByVal adoRS As DAO.Recordset, ByVal strTable As String) As DataTable
2
3 adoRS.MoveFirst()
4 Dim dt As DataTable
5 dt = New DataTable(strTable)
6 Dim i As Integer
7 Dim strcolname As String
8 Dim t As Type
9 Dim dr As DataRow
10
11 For i = 0 To adoRS.Fields.Count - 1
12 strcolname = adoRS.Fields(i).Name
13 t = adoRS.Fields(i).Value.GetType()
14 dt.Columns.Add(strcolname, t)
15 Next
16 While (Not adoRS.EOF)
17 dr = dt.NewRow()
18 For i = 0 To adoRS.Fields.Count - 1
19 dr(i) = adoRS.Fields(i).Value
20 Next
21 dt.Rows.Add(dr)
22 adoRS.MoveNext()
23 End While
24
25 Return dt
26
除了这个麻烦的Data控件,对VB6.0里的Printer对象我也得说说。这个Printer对象提供了很多.NET里的PrintDocument组件无法直接实现的功能,像对窗口,图片的缩放打印。于是我期盼着能直接使用这个Printer对象。查了下MSDN,它告诉我:这个对象在.NET也有内置的支持,于是我按照它说的安装了VisualBasicPowerPacksRedist.msi并引入相关的DLL组件(相关的说明及操作,请参考MSDN:
Printer Class (Microsoft.VisualBasic.PowerPacks.Printing.Compatibility.VB6) | Microsoft Docs
),并引入了 Microsoft.VisualBasic.PowerPacks.Printing.Compatibility.VB6命名空间,这时与VB6.0中Printer对象有关的方法可以用了,可在执行打印时完全没任何纸从打印机出来,如此weird,呵呵,除了这个词我实在不知道还有哪种语言哪个形容词能描述它。最后我不得不用PrintDocument组件实现它。对于这个问题,欢迎大家和我交流。
对于其它的VB组件转换后,大部分都能在.NET里,只要确保添加了对相应组件的引用即可。
另外,你如果想知道VB6.0的控件在VB.NET是否有相应的支持,请参考:
Developer tools, technical documentation and coding examples | Microsoft Docs
写到这里感觉自己有点啰嗦了. 当然,这个转换过程涉及到许多细节要处理,这里我不可能面面俱到。如有问题,欢迎和我交流。
原文链接:
https://www.cnblogs.com/Jeffreyliang/archive/2009/10/09/1578548.html
本文详细解析了从Visual Basic 6.0迁移到Visual Basic
.NET
的全
过程
,涵盖
升级
原因、基本步骤、项目文件
转
换、代码兼容性处理、业务逻辑重构、性能优化以及安全性增强等多个方面。同时提供了实用工具推荐和丰富的代码示例,帮助开发者高效完成项目迁移与
升级
。
VB.NET
与
VB6
(Visual Basic 6.0)的主要区别体现在多个方面,包括语言结构、类型系统、运行时环境、面向对象编程的支持、Unicode支持、内存管理以及集成开发环境(IDE)等。
本文详细介绍了如何将Visual Basic 6(
VB6
)项目
升级
到Visual Basic
.NET
(
VB.NET
),涵盖了使用
升级
向导、手动调整代码、解决常见问题(如数据库连接、用户界面和数据绑定的变化)、高级话题(如跨语言互操作性和数据类型
转
换)等内容。文章还提供了最佳实践和优化建议,包括代码重构、代码审查和文档
更
新,以确保
升级
后的项目在
.NET
环境中稳定高效运行。
(发表于《CSDN开发高手》2003年9月号)作者 Mahesh Chand翻译 韩磊 Visual Basic
.NET
是
Microsoft
Visual Studio
.NET
套件中主要组成部分之一。
.NET
版本的Visual Basic增加了
更
多特性,而且演化为完全面向对象(就像C++)的编程语言。本文将介绍
VB.NET
的新特性,并比较
VB6
.0/
VB.NET
之间的区别,阐述如何利用
VB.NET
编写
简单
的应用程序。1.1 什么是
VB.NET
?
VB.NET
是
VB6
.0的后续版本。Microsof
来源不详。总览:
本文推荐给那些准备将自己的应用移植到Visual Basic
.NET
中的Visual Basic开发者。文章中包括
Visual Basic
.NET
升级
工具的信息的介绍以及将Visual Basic 6结构平滑
升级
到Visual Basic
.NET
的指导
在打开Visual Basic 6.0工程时Visual Basic
.NET
会自动
升级
,但是在绝大多数情况下你需要对在Visual
Basic
.NET
下打开的Visual Basic 6.0程序做一些改动。这篇文章的用途
我以前都是用C#来写,这次搞这个
VB.NET
项目,有点突然。还好语言都是相通的。1.虽说以前的
Microsoft
Visual Basic和
.NET
都是微软自己的东西,可有很多功能的实现方式还不一样,特别是那些控件。2.每个程序都会有自己的业务逻辑,有些可能会很复杂,甚至读别人的代码时你可能对业务逻辑那部分会完全一头雾水。开始也打算在
.NET
环境下重做,可在做了一些尝试后发现根本没法了解那个
VB6
...
vb3.0
升级
vb6
.0
I'm currently working for a company where I have to upgrade over 50
VB6
programs to
VB.NET
2008. So far I'm about half way through, and I've learned quite a few tric...
<!--google_ad_client = "pub-8333940862668978";/* 728x90, 创建于 08-11-30 */google_ad_slot = "4485230109";google_ad_width = 728;google_ad_height = 90;//--><script type="text/javascript"
补丁(Patch)是软件
更
新的一种形式,旨在修正程序中发现的漏洞、错误或缺陷,同时可能会引入新的功能。VC++6.0 和
VB6
.0 的 Service Pack 6(SP6)补丁就是针对这两款软件发布的
更
新包,它们增强了安全性、改善了性能,并且对现有功能进行了优化。Service Pack(服务包)是微软为特定的软件产品发布的一揽子
更
新和修补程序。Service Pack通常包含了重要的软件补丁、安全
更
新、性能改进以及之前已发布的热修复(hotfixes)。
VB.NET
一种
简单
,现代,面向对象计算机编程语言,有微软开发,
VB.NET
是一种基于
.NET
Framework的面向对象编程语言,它是Visual Basic语言的继承者,但是与早期版本的Visual Basic有很大的不同。
VB.NET
是一种强类型语言,支持类、接口委托、异常处理、LINQ等现代编程特性,可以开发Windows应用程序、Web应用程序、服务和组价。
VB.NET
和
VB6
.两种不同的Visual Basic版本,它们在语言、架构、开发环境、应用场景等方面都有很大的差异。
PRB: ListBox 和 ComboBox 控件不存在 ItemData 属性本文的发布号曾为 CHS311340本页症状解决方案状态
更
多信息复现行为的步骤生成一个用来
升级
的 Visual Basic 6.0 示例将 Visual Basic 6.0 项目
升级
到 Visual Basic
.NET
在 Visual
从 Visual Basic 6.0 到 Visual Basic
.NET
的
转
换(1)
Microsoft
Visual Basic
.NET
是
Microsoft
Visual Basic? 的后续版本,它是基于
.NET
框架重新设计的,您可以用它来轻松地创建用于
Microsoft
Windows? 操作系统和 Web 的下一代应用程序。使用 Visual Basic.NE
你没有启用ADODB的引用,或者加载ADODC控件,
在“工程|引用”中添加“
Microsoft
ActiveX Data Object [版本号,比如2.8等] Library”就可以了[用户定义类型未定义]
1.用VS2008打开
Vb6
.0的工程(此时针对语言层面自动
升级
)。
VS
更
新多版了(当前最新VS2017),用最新版再打开2008
升级
后的工程的时候还是会有自动
升级
,相对没多大问题。
2.手动修改自动
升级
后的编译错误。同时注意一些逻辑方面的变化,这些修改是比较麻烦的。
3.有第三方控件的话,针对第三方控件进行代码改修。
4.升...
从 Visual Basic 6.0 到 Visual Basic
.NET
的
转
换
Microsoft
Visual Basic
.NET
是
Microsoft
Visual Basic© 的后续版本,它是基于
.NET
框架重新设计的,您可以用它来轻松地创建用于
Microsoft
Windows© 操作系统和 Web 的下一代应用程序。使用 Visual Basic
.NET
,可视化开发 W