溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何從VB6遷移到VB.NET相關問題解決方案

發布時間:2020-06-11 11:16:33 來源:網絡 閱讀:436 作者:jgsa 欄目:編程語言

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及其他報表控件,需要重寫代碼

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女