事件激活问题,这东西变态了,帮忙啊~~~~~:(((((((((((((((((((((

晒屁屁 2004-02-02 09:43:31
我用以下方法去激活一个事件(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
...全文
29 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
华芸智森 2004-02-03
  • 打赏
  • 举报
回复
控件中的每一个事件,都应该有触发机制,并不是简单的函数。例如,自动义事件函数应该自定义控件中的某个事件调用。或检测调用。
华芸智森 2004-02-02
  • 打赏
  • 举报
回复
你这样定义没错!
但是,你激发事件的函数在什么地方调用?参数从何而来?
rainstormmaster 2004-02-02
  • 打赏
  • 举报
回复
控件代码:
Option Explicit

Public Event Selected(SelectID As String)

Public Sub test(s As String)
RaiseEvent Selected(s + s)
End Sub

主程序窗体代码:
Option Explicit

Private Sub Command1_Click()
Me.UserControl11.test ("h")
End Sub

Private Sub UserControl11_Selected(SelectID As String)
MsgBox SelectID
End Sub
rainstormmaster 2004-02-02
  • 打赏
  • 举报
回复
呵呵,你的事件激活代码没问题,问题是你将过程或函数都定义为Private,那么你怎么在主程序中激活事件呢?

1,451

社区成员

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

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