我用以下方法去激活一个事件(Selected)可都不行,
只能在控件源码调度模式下通过,不能将控件编译完成再激活,为什么会这样,谢谢
并且将整个程序编译好后在smartcheck中调试时也可以激活事件,
我将这个控件及调用程序都编译成p-code还是不行,但所有方法中的MSGBOX还是可以执行的,也就是说他跳过了一个RaiseEvent
并在单独激活事件时(用一个COMMANDBUTTON进行RaiseEvent)可以用--------------------------------------------------------------------------------这个事件调用过程:
1。由一个对象先激活一个NewSelected事件(对象mSSelect)
2。由此控件在事件处理过程中再激活Selected事件,
3。在调用控件的程序中处理事件。
我已经将所有涉及此调用过程的错误处理全部取消还是没用,--------------------------------------------------------------------------------事件声明方法:
Public Event Selected(SelectID As String, SelectName As String, SelectItems As Object)
Event Selected(SelectID As String, SelectName As String, SelectItems As Object)
以上两个都试过--------------------------------------------------------------------------------方法一:直接激发
Private Sub mSSelect_NewSelected(SelectID As String, SelectName As String, SelectItems As Collection)
  On Error Resume Next
'......code....
  RaiseEvent Selected(SelectID, SelectName, SelectItems)
'.....code.....
End Sub--------------------------------------------------------------------------------
方法二:通过一个过程来激发,并在激发后进行提示
Private Sub NewSelectedEvent(SelectID As String, SelectName As String, Optional SelectItems As Collection)
  RaiseEvent Selected(SelectID, SelectName, SelectItems)
End Sub
Private Sub mSSelect_NewSelected(SelectID As String, SelectName As String, SelectItems As Collection)
  On Error Resume Next
 '.....code.....
  NewSelectedEvent SelectID, SelectName, SelectItems
  MsgBox "RaiseEvent Selected_new"
'.....code.....
End Sub--------------------------------------------------------------------------------方法三:直接激发,并在激发后进行提示
Private Sub mSSelect_NewSelected(SelectID As String, SelectName As String, SelectItems As Collection)
  On Error Resume Next
 '.....code.....
  DoEvents
  MsgBox "RaiseEvent Selected_new"
   NewSelectedEvent SelectID, SelectName, SelectItems
  DoEvents
'.....code.....
End Sub

解决方案 »

  1.   

    呵呵,你的事件激活代码没问题,问题是你将过程或函数都定义为Private,那么你怎么在主程序中激活事件呢?
      

  2.   

    控件代码:
    Option ExplicitPublic Event Selected(SelectID As String)Public Sub test(s As String)
       RaiseEvent Selected(s + s)
    End Sub主程序窗体代码:
    Option ExplicitPrivate Sub Command1_Click()
        Me.UserControl11.test ("h")
    End SubPrivate Sub UserControl11_Selected(SelectID As String)
        MsgBox SelectID
    End Sub