c# – 使用互操作提升vb6事件
发布时间:2020-12-15 04:22:54 所属栏目:百科 来源:网络整理
导读:我有一个遗留的VB6组件,我使用tlbimp.exe导入到VS中以生成我的互操作程序集. VB6组件定义了一个允许我在VB6中传递消息的事件. Public Event Message(ByVal iMsg As Variant,oCancel As Variant) 我真的希望能够在我的C#程序中提高它,但它作为事件导入,而不是
我有一个遗留的VB6组件,我使用tlbimp.exe导入到VS中以生成我的互操作程序集. VB6组件定义了一个允许我在VB6中传递消息的事件.
Public Event Message(ByVal iMsg As Variant,oCancel As Variant) 我真的希望能够在我的C#程序中提高它,但它作为事件导入,而不是委托或其他有用的东西.所以,我只能听,但从不开火.有谁知道如何触发VB6中包含的事件? C#事件看起来像 [TypeLibType(16)] [ComVisible(false)] public interface __MyObj_Event { event __MyObj_MessageEventHandler Message; } 遗憾的是我无法更改VB6代码.谢谢. 解决方法
在VB6中,事件只能从类(或表格,视情况而定)声明事件中引发.要强制在VB6中引发事件,您需要在类上公开一个方法来执行此操作.如果你没有源代码,那你就不走运了.
从文档中
例如 Option Explicit Private FText As String Public Event OnChange(ByVal Text As String) 'This exposes the raising the event Private Sub Change(ByVal Text As String) RaiseEvent OnChange(Text) End Sub Public Property Get Text() As String Text = FText End Property Public Property Let Text(ByVal Value As String) FText = Value Call Change(Value) End Property 很抱歉成为坏消息的承担者. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |