偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

老生常談 如何從VB6遷移到VB.NET及相關(guān)問(wèn)題

開(kāi)發(fā) 后端
從VB6遷移到Visual Basic.NET其實(shí)會(huì)遇到不少問(wèn)題,既然我們決定從經(jīng)典的VB6遷出,那么勢(shì)必要首先了解下VB.NET

Visual Basic相信是很多程序員接觸的第一個(gè)開(kāi)發(fā)環(huán)境,當(dāng)然多年后想遷移到Visual Basic.NET還是需要一定的處理工作的。本文將為大家介紹遷移的過(guò)程。51CTO向您推薦《VB.NET教程 - Visual Basic.NET開(kāi)發(fā)指南

在工作中,可能會(huì)碰到需要將VB編寫(xiě)的代碼遷移到VB.NET的情況,有好多細(xì)節(jié)需要處理。好在互聯(lián)網(wǎng)發(fā)展了這么多年,好多問(wèn)題在互聯(lián)網(wǎng)上都有答案,所以需要的時(shí)候搜索一下就能解決。

本人也碰到了從VB遷移到VB.NET的情況,現(xiàn)將碰到的問(wèn)題及其解決方法或替代方法做一個(gè)總結(jié),方便后來(lái)人。

首先,建議看一下這篇英文文章《Converting VB6 to VB.NET》http://dotnet.sys-con.com/node/46335,講述了一般的遷移步驟。

其次,下載Microsoft Visual Basic Power Packs 并安裝,這樣在使用向?qū)B6的代碼遷移到VB.NET之后,能“消滅”不少編譯錯(cuò)誤。

VB Power Packs 2.0 對(duì)應(yīng)VS2005,本人沒(méi)有找到下載地址。

VB Power Packs 3.0 對(duì)應(yīng)VS2008,下載地址:http://download.microsoft.com/download/1/2/A/12AA9B28-4F67-42C3-9319-684E8AD6F0AE/VisualBasicPowerPacks3Setup.exe

據(jù)說(shuō)VB Power Packs 10.0 已經(jīng)發(fā)布了,感興趣的讀者請(qǐng)自行搜索。

之后就是各種瑣碎的問(wèn)題,只能碰到一個(gè),解決一個(gè)。

問(wèn)題:NewIndex 不是“System.Windows.Forms.ListBox”的成員

方法一:

  1. Dim x As Integer 
  2. x = ListBox.Items.Add(rsDates.Fields("fd").Value)  
  3. ListBox.SelectedIndex = x 

方法二:

  1. ListBox.Items.Add(rsDates.Fields("fd").Value)  
  2. ListBox.SelectedIndex=ListBox.Items.Count-1 

問(wèn)題:If App.PrevInstance Then '   程序已經(jīng)運(yùn)行

方法:

  1. If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length > 1 Then 

問(wèn)題:Unload()

方法:從理論上來(lái)講,VB.NET有垃圾收集機(jī)制,所以不用主動(dòng)的注銷(xiāo)對(duì)象,直接注釋掉就行(沒(méi)有經(jīng)過(guò)嚴(yán)格驗(yàn)證)

問(wèn)題:需要對(duì)程序集“mscomctl, Version=10.0.4504.0, Culture=neutral, PublicKeyToken……

原因:引用了office控件

方法:安裝VS的“visual studio tools for Office”,安裝Office200*的“.net可編程支持”

更詳細(xì)的資料:http://saber5d.blog.163.com/blog/static/12799877820098164556798/

問(wèn)題:PictureBox.cls()

方法:PictureBox.Refresh()

問(wèn)題:DateTime.dateDiff()

方法:DateAndTime.DateDiff()

問(wèn)題:在狀態(tài)欄動(dòng)態(tài)添加panel

  1. Dim x As Integer 
  2. x = StatusBar.Panels.Count  
  3. StatusBar.Panels.Add x, string1, string2  
  4. StatusBar.Panels.Add x + 1, string1, string2 

升級(jí)向?qū)⒋a變?yōu)椋?/p>

  1. StatusBar.Items.Add
  2. (New System.Windows.Forms.ToolStripStatusLabel(Integer, string1, string2)) 

方法:手工修改為

  1. StatusBar.Items.Add
  2. (New System.Windows.Forms.ToolStripStatusLabel(string))  
  3. StatusBar.Items.Item(StatusBar.Items.Count - 1).Text = string 

問(wèn)題:“PaintPicture”不是“System.Windows.Forms.PictureBox”的成員。

方法一:

  1. Dim g As Graphics = Picture1.CreateGraphics()  
  2. g.DrawImage(pic, x, y) 

這種方法,每次PictureBox重繪的時(shí)候,圖片會(huì)消失

方法二:

  1. Private blankBitmap As Bitmap  
  2. blankBitmap = New Bitmap(70 * 12, maxRow * 12)  
  3. Picture1.Image = blankBitmap  
  4. Dim g As Graphics  
  5. g = Graphics.FromImage(Picture1.Image)  
  6. g.DrawImage(pic, x, y) 

這種方法,每次PictureBox重繪的時(shí)候,圖片不會(huì)消失

問(wèn)題:LenB()

方法一:

  1. Public Function LenB(ByVal oString As StringAs Integer 
  2. Dim strArray() As Byte 
  3. Dim Strlen As Integer 
  4. Dim MyEncoder As System.Text.Encoding = System.Text.Encoding.Default 
  5. strArray = MyEncoder.GetBytes(oString)  
  6. Strlen = strArray.Length  
  7. Return Strlen  
  8. End Function 

方法二:

System.Text.Encoding.GetEncoding("GB2312").GetByteCount(strMsg)

問(wèn)題:VB6.LoadResPicture("pictureName", VB6.LoadResConstants.ResBitmap)

方法:Me.BackgroundImage = My.Resources.bmpBCSSTART

問(wèn)題:on error ***

建議:盡量替換成try catch

問(wèn)題:背景色

如果某個(gè)按鈕設(shè)置了背景色,尤其是在enter或leave事件中設(shè)置背景色,從VB6轉(zhuǎn)到VB.NET之后,原來(lái)沒(méi)有設(shè)置背景色的按鈕,也會(huì)自動(dòng)添加背景色

方法:手動(dòng)搜索代碼,關(guān)鍵字“backgroundColor”,然后一一修改

問(wèn)題:同樣的字體和字號(hào),在VB6和VB.NET的界面上占的空間大小有細(xì)微差別

方法:把所有界面都檢查一遍

問(wèn)題:TAB頁(yè)使用了ActiveX控件xxx

解決:替換成.net中的TAB頁(yè)

問(wèn)題:Base64編碼與解碼

方法:

編碼

  1. Dim x As Byte()  
  2.  x = System.Text.Encoding.ASCII.GetBytes(s)  
  3. Encrypt = Convert.ToBase64String(x) 

解碼

  1. Dim x As Byte()  
  2. x = Convert.FromBase64String(s)  
  3. Decrypt = System.Text.Encoding.ASCII.GetString(x) 

問(wèn)題:某個(gè)對(duì)話(huà)框框一閃而過(guò)

方法:將Form_Activated中的代碼轉(zhuǎn)移到Form_load中,將Form_Activated注釋掉

問(wèn)題:將ICO轉(zhuǎn)為bmp

VB6.ImageToIPictureDisp(VB6.LoadResPicture("ico", 1))

方法:My.Resources.ico***.ToBitmap()

問(wèn)題:窗體居中

方法:設(shè)置窗體的屬性即可

問(wèn)題:訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)時(shí),IsNull()

方法:isDBNull()

問(wèn)題: data report

方法: 替換成crystal report、RDLC及其他報(bào)表控件,需要重寫(xiě)代碼

其他參考文章

阿泰總結(jié)的一些問(wèn)題: VB6向VB.Net2005遷移相關(guān)知識(shí)

原文標(biāo)題:VB6遷移到VB.NET的一些問(wèn)題匯總

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

【編輯推薦】

  1. VB.NET和C#逐層橫向?qū)Ρ?/span>
  2. VB.NET和C#的發(fā)展與動(dòng)態(tài)語(yǔ)言運(yùn)行時(shí)
  3. 用VB.NET 2008編寫(xiě)數(shù)據(jù)查詢(xún)窗體
  4. VB6實(shí)現(xiàn)MUI程序方法詳解
  5. 詳解VB.NET中鼠標(biāo)滾輪的實(shí)際應(yīng)用

 

責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2009-11-03 17:31:01

VB.NET窗體

2015-07-21 13:39:58

Javascript作用域

2010-01-12 17:54:42

VB.NET Dlli

2009-10-29 14:02:24

VB和VB.NET比較

2010-01-11 18:05:24

VB.NET窗體繼承

2015-06-25 10:46:23

數(shù)據(jù)中心節(jié)能

2010-01-19 15:08:18

VB.NET對(duì)象成員

2009-10-09 17:40:38

VB.Net問(wèn)題集

2010-01-11 15:01:55

VB.NET冒泡排序

2010-01-13 17:16:37

VB.NET冒號(hào)

2010-01-19 17:26:37

VB.NET創(chuàng)建過(guò)程

2010-01-15 13:52:42

VB.NET屬性設(shè)置

2012-02-13 09:46:56

數(shù)據(jù)中心耗能服務(wù)器虛擬化

2010-01-11 13:33:07

VB.NET使用數(shù)組

2009-11-02 17:12:01

VB和VB.NET

2009-10-23 12:53:25

VB.NET語(yǔ)言

2009-10-20 14:21:55

VB.NET fnSi

2009-10-14 12:51:41

VB.NET Data

2009-10-10 17:36:47

VB轉(zhuǎn)型到VB.NET

2011-06-17 11:05:22

VB.NET
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)