我已经获得了一个VB6程序转换为.NET,虽然我已经能够通过谷歌搜索找出大部分VB6细节,但有一个我根本不知道。使用了Winsock,但转换实用程序将其替换为AxMSWinsockLib.AxWinsock。旧代码引用了一个索引属性,AxMSWinsockLib.AxWinsock显然没有,但我无法弄清楚它在这里尝试做什么。有什么想法吗?
Public Function PortsOpen(ByRef colWinsock As Collection, ByRef objWinsock As Winsock, ByVal LocalIPAddress As String) As Boolean
Dim Counter As Long
Dim sWS() As String
'Initial to open com. port
Counter = 0
If colWinsock.Count >= objWinsock.Index + 1 Then
sWS = colWinsock.Item(objWinsock.Index + 1)
答案 0 :(得分:1)
在VB6中,您可以拥有一组控件,然后使用索引引用它们。 .Net
中不再存在此行为我相信你的情况,旧的VB6使用了winsock阵列来促进与其他同行的沟通。
例如,如果VB6中的原始表单是通过添加WinSock控件设计的,然后将其名称更改为mySock,然后手动将其Index属性值设置为0,则变为mySock(0)
在程序的后期,您需要做的就是制作控件的另一个副本
Dim currentNumberOfWinSocks as Integer
currentNumberOfWinSocks = mySock.UpperBound
Load mySock(currentNumberOfWinSocks + 1)
因此,要将此逻辑更改为.Net,您必须通过从代码端完全声明Winsock变量数组来解决此问题,而不必转发设计控件。