VS 20008在很大程度向VB6老程序员做出了让步,使得VB6程序员升级到.net 比以前要容易得多了。许多地方考虑了VB6升级的问题,如增加了Microsoft.VisualBasic.Compatibility命名空间,在帮助中详细比较了VB 2008 与VB6在各方面的细微差别。VB6中的许多有用函数在VB 2008 中依然可以使用等。在这种情况下,我把我以前用VB6做的一些程序升级到了VB2008 ,下面我把升级过程中遇到的一些问题做一下总结.
一、在VB6中允许定义下标不是0的数组,但在VB 2008 中所有的数组下标将全部是0,这将带来很多升级后错误。尤其是一些控件如Listview控件,VB 2008 将COM控件直接升级为对应的.net 控件。但升级后控件下标全部变为0,会带来许多错误,升级后代码也很臃肿,需要优化。如升级前代码:
――――――――――――――――――――――――――――
Dim i As Long
Dim totalbytes As Double
Dim itemx As listItem
For i = 1 To RTUs.Count
itemx = ListView1.ListItems(i)
itemx.Text = RTUs(i).RtuName
itemx.SubItems(1) = Str(RTUs(i).SendoutByteQty)
itemx.SubItems(2) = Str(RTUs(i).ReceiveByteQty)
itemx.SubItems(3) = Str(RTUs(i).SendoutByteQty + RTUs(i).ReceiveByteQty)
totalbytes = totalbytes + RTUs(i).SendoutByteQty + RTUs(i).ReceiveByteQty
Next i
txtTotalbytes.Text = totalbytes
――――――――――――――――――――――――――――――――――――
升级后:
Dim i As Integer
Dim totalbytes As Double
Dim itemx As System.Windows.Forms.ListViewItem
For i = 1 To RTUs.Count
'UPGRADE_WARNING: 集合ListView1.ListItems 的下限已由1 更改为0。单击以获得更多信息:“ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="A3B628A0-A810-4AE2-BFA2-9E7A29EB9AD0"”
itemx = ListView1.Items.Item(i)
itemx.Text = RTUs(i).RtuName
'UPGRADE_WARNING: 集合itemx 的下限已由1 更改为0。单击以获得更多信息:“ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="A3B628A0-A810-4AE2-BFA2-9E7A29EB9AD0"”
If itemx.SubItems.Count > 1 Then
itemx.SubItems(1).Text = Str(RTUs(i).SendoutByteQty)
Else
itemx.SubItems.Insert(1, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, Str(RTUs(i).SendoutByteQty)))
End If
'UPGRADE_WARNING: 集合itemx 的下限已由1 更改为0。单击以获得更多信息:“ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="A3B628A0-A810-4AE2-BFA2-9E7A29EB9AD0"”
If itemx.SubItems.Count > 2 Then
itemx.SubItems(2).Text = Str(RTUs(i).ReceiveByteQty)
Else
itemx.SubItems.Insert(2, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, Str(RTUs(i).ReceiveByteQty)))
End If
'UPGRADE_WARNING: 集合itemx 的下限已由1 更改为0。单击以获得更多信息:“ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="A3B628A0-A810-4AE2-BFA2-9E7A29EB9AD0"”
If itemx.SubItems.Count > 3 Then
itemx.SubItems(3).Text = Str(RTUs(i).SendoutByteQty + RTUs(i).ReceiveByteQty)
Else
itemx.SubItems.Insert(3, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, Str(RTUs(i).SendoutByteQty + RTUs(i).ReceiveByteQty)))
End If
totalbytes = totalbytes + RTUs(i).SendoutByteQty + RTUs(i).ReceiveByteQty
Next i
txtTotalbytes.Text = CStr(totalbytes)
变得很臃肿,而且有错误&#x