Visual Basic相信是很多程序员接触的第一个开发环境,当然多年后想迁移到Visual Basic.NET还是需要一定的处理工作的。本文将为大家介绍迁移的过程。51CTO向您推荐《VB.NET教程 - Visual Basic.NET开发指南》 在工作中,可能会碰到需要将VB编写的代码迁移到VB.NET的情况,有好多细节需要处理。好在互联网发展了这么多年,好多问题在互联网上都有答案,所以需要的时候搜索一下就能解决。 本人也碰到了从VB迁移到VB.NET的情况,现将碰到的问题及其解决方法或替代方法做一个总结,方便后来人。 首先,建议看一下这篇英文文章《Converting VB6 to VB.NET》讲述了一般的迁移步骤。 其次,下载Microsoft Visual Basic Power Packs 并安装,这样在使用向导将VB6的代码迁移到VB.NET之后,能"消灭"不少编译错误。 据说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可编程支持" 问题: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,string2 升级向导将代码变为: StatusBar.Items.Add(New System.Windows.Forms.ToolStripStatusLabel(Integer,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,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) 更多http://www.cnblogs.com/yeilsoiaisn/ 问题:某个对话框框一闪而过 方法:将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及其他报表控件,需要重写代码 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|