回 帖 发 新 帖 刷新版面

主题:[讨论]多个相同的withEvents变量的事件处理怎么做?

在主程序里,需要用到多个相同的对象(是ActiveX EXE,不是OCX),每个对象都有事件处理(即需要用withEvents来声明),它们的事件处理过程都相似,所以希望采取类似于控件数组的方式进行事件处理。
但是,MSDN上说不能创建 WithEvents 变量数组。
难道要一个一个地创建对象
如 dim withEvents myworker1 as worker
dim withEvents myworker2 as worker
dim withEvents myworker3 as worker
dim withEvents myworker4 as worker
......
dim withEvents myworkerN as worker
相应地,事件处理过程有有 N个?!!
那样,只会有一大堆的重复代码。

怎样才能N个对象只用一个处理过程就可以了?
就像下面的一样,用index就能判断是哪个对象的事件。
Private Sub Text1_Change[color=red](Index As Integer)[/color]
'
End Sub

难道使用回调的异步通知,而不是事件??
即客户端实现一个回调方法接口,在需要通知时由部件调用该回调?

回复列表 (共1个回复)

沙发

Private Sub EventHandler(ByVal index As Integer, ByVal state As String)
'所有worker的事件处理
 If myWorkerInfo(index).taskID = -1 Then Exit Sub
    If myWorkerInfo(index).taskID <> -1 Then TaskList.ListItems(myWorkerInfo(index).taskID).SubItems(2) = state
    
    If InStr(1, state, "Fail") > 0 Or InStr(1, state, "Complete") > 0 Then      '使用Instr时注意大小写
        TaskList.ListItems(myWorkerInfo(index).taskID).SubItems(4) = Format(Now, "hh:mm:ss")
        Call FireWorker(index)      '任务完成,解雇worker;
    End If
End Sub

我来回复

您尚未登录,请登录后再回复。点此登录或注册