国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
如何讓VB6.0升級(jí)到VB.NET的過(guò)程變得更簡(jiǎn)單?
我以前都是用C#來(lái)寫,這次搞這個(gè)VB.NET項(xiàng)目,有點(diǎn)突然。還好語(yǔ)言都是相通的。
1.雖說(shuō)以前的Microsoft Visual Basic和.NET都是微軟自己的東西,可有很多功能的實(shí)現(xiàn)方式還不一樣,特別是那些控件。
2.每個(gè)程序都會(huì)有自己的業(yè)務(wù)邏輯,有些可能會(huì)很復(fù)雜,甚至讀別人的代碼時(shí)你可能對(duì)業(yè)務(wù)邏輯那部分會(huì)完全一頭霧水。

開始也打算在.NET環(huán)境下重做,可在做了一些嘗試后發(fā)現(xiàn)根本沒(méi)法了解那個(gè)VB6.0程序的業(yè)務(wù)邏輯,以致于從VB6.0轉(zhuǎn)換到.NET下后,那些老的graph控件沒(méi)法工作。和項(xiàng)目經(jīng)理做了很多研究后,還是決定先讓Microsoft Visual Studio替我們先把VB6.0項(xiàng)目轉(zhuǎn)換生成一個(gè)VB.NET項(xiàng)目,然后在這基礎(chǔ)上改。事實(shí)證明,這種做法很明智,因?yàn)橄啾仍?NET環(huán)境下重做會(huì)少寫很多代碼,而且你幾乎不用去管那個(gè)項(xiàng)目的業(yè)務(wù)邏輯。廢話少說(shuō),下面介紹升級(jí)過(guò)程。

1.在機(jī)子上安裝Microsoft Visual Basic,我用的是Microsoft Visual Basic 6.0中文企業(yè)版。作用有兩個(gè):(1)確保以前的VB項(xiàng)目能正常工作.(2)方便以后能回到這個(gè)老項(xiàng)目中進(jìn)行一些調(diào)試。
2.打開你的Microsoft Visual Studio,接著執(zhí)行File-Open-Project/Solution,在彈出的對(duì)話框找到將被轉(zhuǎn)換的.vbp工程文件,選中并打開它。此時(shí)會(huì)彈出Visual Basic Upgrade Wizard。在這個(gè)過(guò)程你需要指定被轉(zhuǎn)換過(guò)來(lái)的項(xiàng)目的位置以及項(xiàng)目類型。因?yàn)槲疫@個(gè)是桌面程序,所以我選擇了.exe類型。參數(shù)準(zhǔn)備完后,IDE會(huì)需要比較長(zhǎng)的時(shí)間來(lái)完成升級(jí)過(guò)程。
3.轉(zhuǎn)換完成后,你會(huì)發(fā)現(xiàn)IDE提示了很多代碼的錯(cuò)誤。其實(shí)很多VB6.0里面的老控件都已經(jīng)被Visual Studio轉(zhuǎn)換過(guò)來(lái)了,或者Visual Studio里已經(jīng)以其它相似的名字內(nèi)置了對(duì)VB6.0老控件的支持。
有一點(diǎn)VB6.0里的DBGrid控件會(huì)被轉(zhuǎn)化成.NET下的AxMSDBGrid.AxDBGrid類型的控件,這種控件在VB6.0里需要Data控件作為數(shù)據(jù)源。.NET已完全拋棄了Data控件,不再提供對(duì)它的直接支持,而選用了性能更高的ADO.NET組件。開始我們本打算原封不動(dòng)的用轉(zhuǎn)換過(guò)來(lái)的控件,后來(lái)發(fā)現(xiàn)這個(gè)AXDBGrid控件的DataSource屬性必須要是一個(gè)ICursor,而當(dāng)今現(xiàn)存的數(shù)據(jù)源控件除了Data控件都無(wú)法提供這個(gè)ICursor接口屬性,但這個(gè)Data控件在.NET中是無(wú)法使用的。
最后不得已選用了.NET下標(biāo)準(zhǔn)的數(shù)據(jù)顯示控件DataGridView,并用以下代碼模擬出Data控件。

1  Public Solar As DAO.Recordset
2 ModelData = DAODBEngine_definst.Workspaces(0).OpenDatabase(Application.StartupPath + "\Cmpnents.mdb"FalseFalse"MS Access;PWD=" & pssss)
3  Solar = ModelData.OpenRecordset("SELECT * From SMake", DAO.RecordsetTypeEnum.dbOpenDynaset)
對(duì)上面的代碼我得說(shuō)明下:
1.DAODBEngine_definst是.VB文件中一個(gè)Module里聲明的對(duì)象。代碼如下:
Module UpgradeSupport
    
Friend DAODBEngine_definst As New DAO.DBEngine
End Module
2.其中DAO命名空間在dao360.dll中(你需要用regsvr32.exe注冊(cè)該DLL,然后把它以COM組件的形式引入到自己的項(xiàng)目中),而VB中只能使用DAO350.DLL。
3.這里選用DAO.Recordset而不選用其它數(shù)據(jù)源是因?yàn)樵搶?duì)象本身提供了幾乎Data控件所具有的所有方法,像MoveFirst(),MoveLast(),MoveNext()等方法,這樣就可以減少對(duì)升級(jí)后的代碼修改。
4.Recordset對(duì)象是無(wú)法直接作為DataGridView的數(shù)據(jù)源的,必須先把轉(zhuǎn)化為DataTable對(duì)象,再把它作為DGV的數(shù)據(jù)源,轉(zhuǎn)換代碼如下:

 1 Function RecordsetToDataTable(ByVal adoRS As DAO.Recordset, ByVal strTable As StringAs DataTable
 2 
 3         adoRS.MoveFirst()
 4         Dim dt As DataTable
 5         dt = New DataTable(strTable)
 6         Dim i As Integer
 7         Dim strcolname As String
 8         Dim t As Type
 9         Dim dr As DataRow
10 
11         For i = 0 To adoRS.Fields.Count - 1
12             strcolname = adoRS.Fields(i).Name
13             t = adoRS.Fields(i).Value.GetType()
14             dt.Columns.Add(strcolname, t)
15         Next
16         While (Not adoRS.EOF)
17             dr = dt.NewRow()
18             For i = 0 To adoRS.Fields.Count - 1
19                 dr(i) = adoRS.Fields(i).Value
20             Next
21             dt.Rows.Add(dr)
22             adoRS.MoveNext()
23         End While
24 
25         Return dt
26 

除了這個(gè)麻煩的Data控件,對(duì)VB6.0里的Printer對(duì)象我也得說(shuō)說(shuō)。這個(gè)Printer對(duì)象提供了很多.NET里的PrintDocument組件無(wú)法直接實(shí)現(xiàn)的功能,像對(duì)窗口,圖片的縮放打印。于是我期盼著能直接使用這個(gè)Printer對(duì)象。查了下MSDN,它告訴我:這個(gè)對(duì)象在.NET也有內(nèi)置的支持,于是我按照它說(shuō)的安裝了VisualBasicPowerPacksRedist.msi并引入相關(guān)的DLL組件(相關(guān)的說(shuō)明及操作,請(qǐng)參考MSDN:http://msdn.microsoft.com/zh-cn/library/microsoft.visualbasic.powerpacks.printing.compatibility.vb6.printer.aspx),并引入了 Microsoft.VisualBasic.PowerPacks.Printing.Compatibility.VB6命名空間,這時(shí)與VB6.0中Printer對(duì)象有關(guān)的方法可以用了,可在執(zhí)行打印時(shí)完全沒(méi)任何紙從打印機(jī)出來(lái),如此weird,呵呵,除了這個(gè)詞我實(shí)在不知道還有哪種語(yǔ)言哪個(gè)形容詞能描述它。最后我不得不用PrintDocument組件實(shí)現(xiàn)它。對(duì)于這個(gè)問(wèn)題,歡迎大家和我交流。

對(duì)于其它的VB組件轉(zhuǎn)換后,大部分都能在.NET里,只要確保添加了對(duì)相應(yīng)組件的引用即可。
另外,你如果想知道VB6.0的控件在VB.NET是否有相應(yīng)的支持,請(qǐng)參考:http://msdn.microsoft.com/zh-cn/library/ms393044(VS.71).aspx
寫到這里感覺(jué)自己有點(diǎn)啰嗦了. 當(dāng)然,這個(gè)轉(zhuǎn)換過(guò)程涉及到許多細(xì)節(jié)要處理,這里我不可能面面俱到。如有問(wèn)題,歡迎和我交流。
 
2009-10-09 13:12 | CoolCode  
N久之前我也做過(guò)類似事情,但不管怎樣簡(jiǎn)單,始終是件苦差事。把舊的東西毫不吝嗇地丟掉才是明智選擇。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Visual Basic 6.0 sp6 簡(jiǎn)體中文企業(yè)版(附MSDN)
net簡(jiǎn)要介紹
從VB 6.0到VB.NET的轉(zhuǎn)換
Builder.com.cn-編程-Visual Studio 2005 中的新的 DataSet 功能
VB.NET Sub過(guò)程簡(jiǎn)單分析
VB.net學(xué)習(xí)筆記(二)vb.net界面
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服