0

我已经获得了一个 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)
4

1 回答 1

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 变量数组来解决此问题,而无需中继设计控制。

于 2012-11-07T12:20:11.100 回答