c# – 使用互操作提升vb6事件

前端之家收集整理的这篇文章主要介绍了c# – 使用互操作提升vb6事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个遗留的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中引发事件,您需要在类上公开一个方法来执行此操作.如果你没有源代码,那你就不走运了.

从文档中

RaiseEvent eventname [(argumentlist)]

The required eventname is the name of
an event declared within the module
and follows Basic variable naming
conventions.

例如

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

很抱歉成为坏消息的承担者.

原文链接:https://www.f2er.com/csharp/91761.html

猜你在找的C#相关文章