如何从VB6迁移到VB.NET相关问题解决方案

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, 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)
    更多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及其余报表控件,须要重写代码程序员

相关文章
相关标签/搜索