把动态添加的控件数组的最大Index值事先保存为IndexMax 然后设置错误处理 On Error resume Next Dim I as Integer For I=1 to IndexMax '不要Unload cmdTest(0) If cmdTest(i).Caption="Unload" then Unload cmdTest(i) Endif Next
'cmdText.count 是老变的!!! 'For i= 1 to cmdTest.Count Dim TextX As VB.TextBox For Each TextX In Text1 If TextX.Index > 0 Then '不能卸载设计时创建的控件 Unload TextX End If Next
用WINSOCK控件,有5个客户端同SERVER建立了连接,如果第3个客户端结束连接,则UNLOAD SckServer(3),而SERVER接收客户端的数据时,使用FOR I=1 TO SckServer.Count-1 ...... 这样如果已经UNLOAD SscServer(3),那系统出错,如何处理?请高手指点。
'其实 Microsoft 早想到了,用集合不就解决了,不用错误处理! Dim CommandX As VB.CommandButton For Each CommandX In cmdTest If CommandX.Index > 0 Then '不能卸载设计时创建的控件 Unload CommandX End If Next
用WINSOCK控件,有5个客户端同SERVER建立了连接,如果第3个客户端结束连接,则UNLOAD SckServer(3),而SERVER接收客户端的数据时,使用FOR I=1 TO SckServer.Count-1 ...... 这样如果已经UNLOAD SscServer(3),那系统出错,如何处理?请高手指点。
同意 playyuer(女爱㊣) 的看法
看一看这段代码(我这段代码是关闭所有的非MDI窗口): Private Sub showNew() Dim i As Integer For i = 0 To Forms.Count - 1 If Forms(i).Name <> "系统主菜单" Then Unload Forms(i) If Forms.Count = 1 Then Exit For End If End If i = 0 Next i End Sub
to cloud_soft(cloud) 你是不是眼神不好! 我再说一遍:(其实这段程序在 Winsock 编程中是最常见、经典的) Dim WinsockX As MSWinsockLib.Winsock For Each WinsockX In SckServer If WinsockX.Index <> 0 AND WinsockX.State = sckClosed Then '不能卸载设计时创建的控件 Unload WinsockX End If Next
for each c in controls if c.name="cmdTest" then select case c.index case 0... 'design time indexs case else unload c end select endif next
同意playyuer(女爱㊣) 给他加分吧
管它出不出错呢。加个on error resume next 不就好了吗。
先定义一个结构, Private Type tActiveSocket Connected As Boolean ClientIPAddress As String ClientName As String Name As String End Type Private gActivesockets(100) As tActiveSocket For i = 1 To UBound(gActivesockets) If gActivesockets(i).Connected Then sckServer(i).SendData send DoEvents End If Next i
然后设置错误处理
On Error resume Next
Dim I as Integer
For I=1 to IndexMax '不要Unload cmdTest(0)
If cmdTest(i).Caption="Unload" then
Unload cmdTest(i)
Endif
Next
'For i= 1 to cmdTest.Count
Dim TextX As VB.TextBox
For Each TextX In Text1
If TextX.Index > 0 Then '不能卸载设计时创建的控件
Unload TextX
End If
Next
非要判断cmdTest(3),cmdTest(8)是否已经被UNLOAD的话,
还是老办法,设置错误处理On Error Goto ...
然后访问一下cmdTest(3)的属性看看是否出错就知道了
这样如果已经UNLOAD SscServer(3),那系统出错,如何处理?请高手指点。
Dim CommandX As VB.CommandButton
For Each CommandX In cmdTest
If CommandX.Index > 0 Then '不能卸载设计时创建的控件
Unload CommandX
End If
Next
这样如果已经UNLOAD SscServer(3),那系统出错,如何处理?请高手指点。
Private Sub showNew()
Dim i As Integer
For i = 0 To Forms.Count - 1
If Forms(i).Name <> "系统主菜单" Then
Unload Forms(i)
If Forms.Count = 1 Then
Exit For
End If
End If
i = 0
Next i
End Sub
我再说一遍:(其实这段程序在 Winsock 编程中是最常见、经典的)
Dim WinsockX As MSWinsockLib.Winsock
For Each WinsockX In SckServer
If WinsockX.Index <> 0 AND WinsockX.State = sckClosed Then '不能卸载设计时创建的控件
Unload WinsockX
End If
Next
if c.name="cmdTest" then
select case c.index
case 0... 'design time indexs
case else
unload c
end select
endif
next
给他加分吧
Private Type tActiveSocket
Connected As Boolean
ClientIPAddress As String
ClientName As String
Name As String
End Type
Private gActivesockets(100) As tActiveSocket
For i = 1 To UBound(gActivesockets)
If gActivesockets(i).Connected Then
sckServer(i).SendData send
DoEvents
End If
Next i
我就这样用