签到

05月05日
尚未签到

共有回帖数 2

    高傲自我

    等级:
    Visual Basic相信是很多程序员接触的第一个开发环境,当然多年后想迁移到Visual Basic.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有垃圾收集机制,所以不用主动的注销对象,直接注释掉就行(没有经过严格验证)

    楼主 2016-08-18 10:25 回复

    高傲自我

    等级:
    问题:需要对程序集“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”,然后一一修改

    1楼 2016-08-18 10:26 回复

    高傲自我

    等级:
     问题: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及其他报表控件,需要重写代码

      链接:http://www.cnblogs.com/ols/archive/2010/03/23/1692297.html

    2楼 2016-08-18 10:26 回复

共有回帖数 2
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知