Vb中判断控件是否卸载的问题

wj_yhl 2009-04-11 10:00:44
用Vb写了个程序,创建了一个winsock控件数组接受多个客户端的连接,在
Private Sub sckServer_Close(Index As Integer)
'释放相应对象的资源
Unload sckServer(Index)

某个客户端通信断开时卸载该控件

然后发送数据时,用sckServer(i) Is Nothing判断控件是否存在,但是似乎这样并没有用啊,仍然会尝试向所有控件发送数据,怎么解决呢?????????
For i = 1 To intMax
If Not (sckServer(i) Is Nothing) Then
DoEvents
sckServer(i).SendData txtSend.Text
End If
Next i
...全文
125 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
神马都能聊 2009-04-12
  • 打赏
  • 举报
回复
微软给你提供的tag属性,使用状态就随便填写个值比如true,否则就清空
myhot-河马吃草 2009-04-11
  • 打赏
  • 举报
回复
三楼方法高,,不知对menu 是否起作用。。回头试试看。
wj_yhl 2009-04-11
  • 打赏
  • 举报
回复
决定还是采用三楼的方法吧
wj_yhl 2009-04-11
  • 打赏
  • 举报
回复
楼上的方法不行的,编译时会提示方法错误的
wj_yhl 2009-04-11
  • 打赏
  • 举报
回复
楼上的方法不行的,编译时会提示方法错误的
fishmans 2009-04-11
  • 打赏
  • 举报
回复
释放对象时用set sckServer(i)=nothing
vbman2003 2009-04-11
  • 打赏
  • 举报
回复
对于楼主的情况,在添加连接加载winsock时,可以同时用一个bool数组来标志对应的winsock的(index)状态,要判断时,只要判断对应的bool(index)状态就行...
vbman2003 2009-04-11
  • 打赏
  • 举报
回复
看到许多代码用is nothing来判断控件是否卸载,个人认为不对,is nothing可以用于判断一个声明的对象,但对直接添加到窗体上的控件数组不适用,这个数组对象不是代码声明的对象...我一般如下处理:


Function TestControl(Ctl As Variant, idx As Long) As Boolean
Dim c As Control
For Each c In Ctl
If c.Index = idx Then
TestControl = True
Exit Function
End If
Next
End Function
myhot-河马吃草 2009-04-11
  • 打赏
  • 举报
回复
访问一下

on error goto err1

debug.print sckServer(i).name
result=1
exit sub

err1:

result=0

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧