(转)VB6迁移到VB.NET的一些问题汇总

    在工作中,可能会碰到需要将VB编写的代码迁移到VB.NET的情况,有好多细节需要处理。好在互联网发展了这么多年,好多问题在互联网上都有答案,所以需要的时候搜索一下就能解决。
    本人也碰到了从VB迁移到VB.NET的情况,现将碰到的问题及其解决方法或替代方法做一个总结,方便后来人。

    首先,建议看一下这篇英文文章《Converting VB6 to VB.NET》http://dotnet.sys-con.com/node/46335,讲述了一般的迁移步骤。
   
    其次,下载Microsoft Visual Basic Power Packs 并安装,这样在使用向导将VB6的代码迁移到VB.NET之后,能“消灭”不少编译错误。
    VB Power Packs 2.0 对应VS2005,本人没有找到下载地址。
    VB Power Packs 3.0 对应VS2008,下载地址:http://download.microsoft.com/download/1/2/A/12AA9B28-4F67-42C3-9319-684E8AD6F0AE/VisualBasicPowerPacks3Setup.exe
    据说VB Power Packs 10.0 已经发布了,感兴趣的读者请自行搜索。
   
    之后就是各种琐碎的问题,只能碰到一个,解决一个。
   
    问题:NewIndex 不是“System.Windows.Forms.ListBox”的成员
    方法一:
Dim x As Integer
x = ListBox.Items.Add(rsDates.Fields("fd").Value)
ListBox.SelectedIndex = x
    方法二:
    ListBox.Items.Add(rsDates.Fields("fd").Value)
ListBox.SelectedIndex=ListBox.Items.Count-1
   

    问题:If App.PrevInstance Then '   程序已经运行
    方法:If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length > 1 Then

    问题:Unload()
    方法:从理论上来讲,VB.NET有垃圾收集机制,所以不用主动的注销对象,直接注释掉就行(没有经过严格验证)

    问题:需要对程序集“mscomctl, Version=10.0.4504.0, Culture=neutral, PublicKeyToken……
    原因:引用了office控件
    方法:安装VS的“visual studio tools for Office”,安装Office200*的“.net可编程支持”
    更详细的资料:http://saber5d.blog.163.com/blog/static/12799877820098164556798/

    问题:PictureBox.cls()
    方法:PictureBox.Refresh()

    问题:DateTime.dateDiff()
    方法:DateAndTime.DateDiff()

    问题:在状态栏动态添加panel
    Dim x As Integer
    x = StatusBar.Panels.Count
    StatusBar.Panels.Add x, string1, string2
    StatusBar.Panels.Add x + 1, string1, string2
    升级向导将代码变为:
    StatusBar.Items.Add(New System.Windows.Forms.ToolStripStatusLabel(Integer, string1, string2))
    方法:手工修改为
    StatusBar.Items.Add(New System.Windows.Forms.ToolStripStatusLabel(string))
    StatusBar.Items.Item(StatusBar.Items.Count - 1).Text = string

    问题:“PaintPicture”不是“System.Windows.Forms.PictureBox”的成员。
    方法一:
Dim g As Graphics = Picture1.CreateGraphics()
g.DrawImage(pic, x, y)
    这种方法,每次PictureBox重绘的时候,图片会消失
    方法二:
        Private blankBitmap As Bitmap
        blankBitmap = New Bitmap(70 * 12, maxRow * 12)
        Picture1.Image = blankBitmap   
        Dim g As Graphics
        g = Graphics.FromImage(Picture1.Image)
        g.DrawImage(pic, x, y)
    这种方法,每次PictureBox重绘的时候,图片不会消失
 
    问题:LenB()
    方法一:
Public Function LenB(ByVal oString As String) As Integer
            Dim strArray() As Byte
            Dim Strlen As Integer
            Dim MyEncoder As System.Text.Encoding = System.Text.Encoding.Default
            strArray = MyEncoder.GetBytes(oString)
            Strlen = strArray.Length
            Return Strlen
        End Function
    方法二:
System.Text.Encoding.GetEncoding("GB2312").GetByteCount(strMsg)

    问题:VB6.LoadResPicture("pictureName", VB6.LoadResConstants.ResBitmap)
    方法:Me.BackgroundImage = My.Resources.bmpBCSSTART

    问题:on error ***
    建议:尽量替换成try catch

    问题:背景色
    如果某个按钮设置了背景色,尤其是在enter或leave事件中设置背景色,从VB6转到VB.NET之后,原来没有设置背景色的按钮,也会自动添加背景色
    方法:手动搜索代码,关键字“backgroundColor”,然后一一修改

    问题:同样的字体和字号,在VB6和VB.NET的界面上占的空间大小有细微差别
    方法:把所有界面都检查一遍

    问题:TAB页使用了ActiveX控件xxx
    解决:替换成.net中的TAB页

    问题:Base64编码与解码
    方法:
    编码
        Dim x As Byte()
         x = System.Text.Encoding.ASCII.GetBytes(s)
        Encrypt = Convert.ToBase64String(x)
    解码
        Dim x As Byte()
        x = Convert.FromBase64String(s)
        Decrypt = System.Text.Encoding.ASCII.GetString(x)

    问题:某个对话框框一闪而过
    方法:将Form_Activated中的代码转移到Form_load中,将Form_Activated注释掉

    问题:将ICO转为bmp
        VB6.ImageToIPictureDisp(VB6.LoadResPicture("ico", 1))
    方法:My.Resources.ico***.ToBitmap()

    问题:窗体居中
    方法:设置窗体的属性即可

    问题:访问数据库时,IsNull()
    方法:isDBNull()
 
    问题: data report
    方法: 替换成crystal report、RDLC及其他报表控件,需要重写代码
   
    其他参考文章
    阿泰总结的一些问题:  VB6向VB.Net2005迁移相关知识 
VB6工程批量转C#、VB.NET、C++的开箱即用迁移工具集 直接拖入VB6源码文件(.frm、.cls、.bas)就能批量生成C#、VB.NET、VC++ MFC、VC++.NET(CLR)、J#、Borland C++ Builder、Delphi等目标语言代码。核心程序VBto.exe内置对ADO、Excel Application、Recordset、TreeView、ListView、Paint绘图、事件绑定、类型映射等VB6高频特性的转换逻辑,覆盖VB6运行时常见对象和控件行为。配套提供CHM帮助文档、多个可运行示例工程(如FormTestDeclare. 阅读详情

相关推荐

vs2005无法进行设计问题解决办法

vs2005无法进行设计问题vs2005无法进行设计问题

VB6迁移到VB.NET的一些问题汇总

在工作中,可能会碰到需要将VB编写的代码迁移到VB.NET的情况,有好多细节需要处理。好在互联网发展了这么多年,好多问题在互联网上都有答案,所以需要的时候搜索一下就能解决。 本人也碰到了从VB迁移到VB.NET的情况,现将碰到的问题及其解决方法或替代方法做一个总结,方便后来人。 首先,建议看一下这篇英文文章《Converting VB6 to VB....

weixin_30757793的博客 337

用Verilog在FPGA上做个电子琴:从矩阵键盘到蜂鸣器的完整实现(附代码)

本文详细介绍了如何使用Verilog在FPGA上实现一个完整的电子琴系统,涵盖矩阵键盘扫描、音调生成和蜂鸣器驱动等核心模块。通过模块化设计和PWM调制技术,开发者可以构建一个可交互的音乐播放器,项目代码完整且易于扩展,适合FPGA初学者和数字逻辑设计爱好者实践。

weixin_29191669的博客 403

VB6代码迁移到VB .NET如何引用DLL

有一读卡器设备,提供二次开发使用的DLL文件。但提供的实例只有VB代码,现需要迁移至VB .NET 2008。 VB6中的相关代码: '数据加密运算 Public Declare Sub cpudata3desenc Lib "OUR_MIFARE.dll" (ByVal indatabuf As Long, ByVal indatalen As Long, ByVal key As Long, ByVal keylen As Byte, ByVal outdatabuf As Long, ByVal

The 44th Demilitarized Zone 1473

【SLAM】SVO2.0编译运行和论文代码解读

SVO2是我遇到的最难编译的代码了,可能公开版本不能放太鲁棒的代码吧,搞了快一个星期,终于跑起来了。

iwanderu的博客 5973

浅析ArcGis中的软件——ArcMap、ArcScene、 ArcGlobe、ArcCatalog

ArcMap:是集空间数据显示、矢量数据编辑、冲突数据检查(拓扑检查)、查询检索(地理编码)、统计(字段属性表)、报表生成、空间分析(ArcGIS Spatial Analyst)和高级制图(制图表达)等众多功能干一体的桌面应用平台软件。而且提供所见即所得的符号编辑器,令用户可以随心所欲地生成任意复杂的点、线、面符号。所支持的空间数据格式包括Arclnfo coverages、ESRI shapefiles、ArcSDE lavers、DXF、DWG、DGN、常见的图像格式、GRIDs、TINs等。

lxlmycsdnfree的博客 6563

vb6转vb.net

一直在用vb6写软件,但最近系统要做web版,但之前的业务规则全在代码中写死了,没用使用存贮过程,如果在web端重写规则,则工作量太大,项目时间也不允许,只好把业务规则转到vb.net中。现在的vb.net版本已不支持从vb6转入,不过可以直接把业务规则复制到新的vb.net中,差异很小,基本改改就行。转换过程中以下几点要特别注意:1、vb6中过程调用可以不用括号包围参数,如 add a,b这样是合法的,但vb.net中不支持这种写法,必须是add(a,b)这样变动。2、vb6中支持感叹号(!)形式访问fi

chinaherolts2008的博客 1280

从个体到群体:Cartool实战静息态EEG微状态聚类全解析

本文详细解析了使用Cartool软件进行静息态EEG微状态聚类的完整实战流程。从个体水平聚类到群体模板提取,再到指标量化,文章深入探讨了k-means算法的应用、GFP峰值数据的使用技巧以及关键参数设置,为脑电信号处理研究者提供了从数据准备到结果解读的全方位指南。

weixin_29062671的博客 290

微软推荐的 VB6 项目源代码迁移工具

微软推荐的 VB6 项目源代码迁移工具 详见微软介绍: https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/partners微软官方

中游鱼的博客 2794

Windows平台无人机仿真:从零搭建SITL环境与QGC联调

本文详细指导了在Windows平台上从零搭建无人机软件在环(SITL)仿真环境,并与QGroundControl(QGC)进行联调的完整流程。通过使用Cygwin工具链,开发者可以在没有实体硬件的情况下,模拟运行ArduPilot飞控,并通过MAVLink协议连接QGC地面站进行全功能测试,为无人机软件开发提供了一个安全、经济的虚拟沙盒环境。

weixin_29239279的博客 408

PCL 提取两片点云的非重叠部分【2025最新版】

PCL 提取两片点云的非重叠部分。博客长期更新,本文最近一次更新时间为:2025年9月1日。

点云侠的博客 36万+

从VB6迁移到VB.NET及相关问题

原文地址(http://www.cnblogs.com/kingangWang/archive/2012/06/07/2540982.html) Visual Basic相信是很多程序员接触的第一个开发环境,当然多年后想迁移到Visual Basic.NET还是需要一定的处理工作的。本文将为大家介绍迁移的过程。推荐《VB.NET教程 - Visual Basic.NET开发指南》 在...

bangrulu3140的博客 325

项目管理知识体系(PMBOK)中的质量规划详解

你是否遇到过这些场景?软件上线后用户投诉“功能漏洞多”,团队连夜返工;装修完的房子墙面开裂,施工方和业主互相推诿;新研发的手机电池续航不达标,被迫延迟发布。这些问题的根源,往往是项目启动时没有做好质量规划。本文聚焦PMBOK中“质量规划”(Plan Quality Management)过程,覆盖其核心概念、操作步骤、工具技术与实战应用,适用于IT、建筑、制造等各类项目场景。

项目管理的博客 1118

vb.net类型转换_将VB6转换为VB.NET

vb.net类型转换 VB.Net has a built-in migration tool, but converting VB6 code to VB.NET isn’t as easy as loading it to the newer software. The migration tool does a lot of the work, especially with syntax,...

cumao2792的博客 1785

一层一责,一聚合一包:DDD分层架构下的微服务代码模型、三重边界与服务数据协作

领域模型画得再清楚,落不进代码也是空谈。本文以一个可运行的客户中心微服务为线索,先对比整洁架构、六边形架构与DDD分层架构,指出三者共同守护的那条隔离核心业务的红线;再把DDD分层落成四个一级目录、以聚合为单位分包、一个聚合一个仓储的代码模型,拆解实体、聚合根、值对象、领域事件、领域服务与仓储的设计要点;随后厘清逻辑、物理、代码三重边界,并用检查器实测:干净代码零越界,拆出积分聚合时领域代码无需改动;注入九处越界后,必须先重构才能拆分。最后梳理服务调用三场景与PO、DO、DTO、VO的协作。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 177万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

gmStudio - vb6/asp 到 .NET - 迁移工具

我们提供最快、最灵活的:VB6 转换工具,gmStudio - vb6/asp 到 .NET - 迁移工具 Great Migrations 帮助团队保留和增强业务关键系统。 我们先进的软件重新设计工具和敏捷方法可以帮助您将 VB6 和 ASP 经典系统升级为 C# 和 VB.NET。

控件与插件之大全 1044

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

vb6 迁移到 .net_开发人员为什么不从VB6切换/迁移/转换到VB.NET?

vb6 迁移到 .netIMHO, it’s because converting (both projects and your mind) to VB6 to .NET is hard.恕我直言,这是因为将(项目和您的想法)从VB6转换到.NET都很困难。 VB6 existed for one reason and one reason only – to hide the complexi...

cunfuteng7334的博客 353

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

如何让VB6.0升级到VB.NET的过程变得更简单?

我以前都是用C#来写,这次搞这个VB.NET项目,有点突然。还好语言都是相通的。 1.虽说以前的Microsoft Visual Basic和.NET都是微软自己的东西,可有很多功能的实现方式还不一样,特别是那些控件。 2.每个程序都会有自己的业务逻辑,有些可能会很复杂,甚至读别人的代码时你可能对业务逻辑那部分会完全一头雾水。 开始也打算在.NET环境下重做,可在做了一些尝试后发现根本没法了解那个VB6.0程序的业务逻辑,以致于从VB6.0转换到.NET下后,那些老的graph控件没法工作。和项目经理做了

chinaherolts2008的博客 3629

VB6.0与VB.NET函数的区别

VB6.0与VB.NET函数的区别 VB6.0 VB.NET AddItem

ygzh_123的专栏 4353

VB中调用VB.NET包装类

概述许多组织都有一个重要的 Microsoft Visual Basic 6 代码基,并且试图就该旧式代码作出最好的决断。在决定如何处理 Visual Basic 6 应用程序时,基本有三种选择。可以维持 Visual Basic 6 应用程序的现状,而无需向该旧式应用程序中加入任何新技术。可以将 Visual Basic 6 应用程序完全迁移到 Visual Basic .NET 中。或者,

盛政(kisssy)的专栏 4107

VB6.0和VB.Net的对照表

VB6.0 VB.NET AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1.Items.Add

1859

老生常谈:从VB6迁移到VB.net

<br />Visual Basic相信是很多程序员接触的第一个开发环境,当然多年后想迁移到Visual Basic.NET还是需要一定的处理工作的。本文将为大家介绍迁移的过程。<br /><br />  在工作中,可能会碰到需要将VB编写的代码迁移到 VB.NET的情况,有好多细节需要处理。好在互联网发展了这么多年,好多问题在互联网上都有答案,所以需要的时候搜索一下就能解决。<br /><br />  本人也碰到了从VB迁移到VB.NET的情况,现将碰到的问题及其解决方法或替代方法做一个总结,方便后来人。

jiahe8899的专栏 1183

(转)Converting VB6 to VB.NET, Part I

http://dotnet.sys-con.com/node/46335?page=0,0 .NET: Article Converting VB6 to VB.NET, Part I A Look at Your Options and When to Use Them BY DENNIS HAYES ARTICLE RATING: ...

mlxia的专栏 423

vb与vb.net代码转换

Microsoft.VisualBasic.FileSystem.RmDir 函数 System.IO.Directory.Delete() 方法。Math.IEEERemainder 方法 Debug.WriteLine(Math.IEEERemainder(10, 3)) '结果 1。Object名.Items.Add ListBox1.Items.Add ComboBox1.Items.Add。System.Math.Floor 方法 System.Math.Ceiling 方法。

山水CAD 二次开发 1239
上一篇: (转)太阁立志传立志传5太阁立志传技巧篇
下一篇: (转)《软件工程的事实与谬论》
mlxia
博客等级 码龄26年 28粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值