我有一个带有多个事件的 activeX 组件。在 .net 证明中调试这个 dll,事件被引发并且可以断点(这是一个词吗?;))通过 regasm /codebase 注册这个 dll 工作,我可以在表单上的 ax 中添加这个 activeX。事件列在 ax 中的 activeX-explorer 中。但似乎,我没有机会处理 ax 中引发的事件。
使用另一个activeX(例如Microsoft Date and Time Picker Control)可以正常工作。
我感谢任何提示或提示!
这里有一些代码行,我正在谈论。
namespace <someNamespace>
{
[ProgId("<someProgID>")]
[ClassInterface(ClassInterfaceType.AutoDual), ComSourceInterfaces(typeof( <myInterface> ))]
[Guid("<someGUID>")]
[ComVisible(true)]
public class <ClassName>
{
[instantiate some COM-Object, named dummy]
public
<ClassName>( ...)
{
init();
}
public delegate void <someDelegate>( int a, int b );
public event someDelegate myDelegate;
[ComVisible(true)]
public void OnEvent( int a, int b )
{
if ( myDelegate != null )
{
Console.WriteLine( "yippie" );
}
}
[ComVisible(true)]
public void run( ... )
{
this.myDelegate += new someDelegate( this.OnEvent );
}
private void
onEvent( int a, int b )
{
myDelegate( a, b );
}
#endregion
}
}
[Guid("<someOtherGUID>")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface <myInterface>
{
[DispId(1)]
void myDelegate( int a, int b );
}
}
这些是与事件相关的基本功能(希望我没有忘记其中之一)。activeX 本身是一个 com 对象的包装器,它本身不能集成到 ax 中,afaik。"onEvent" 是一个由 com 对象的事件调用的函数并触发 "myDelegate"。这一切工作正常,在 Visual Studio 中进行测试 - 可以在表单上处理事件,调用 activeX-part。最后一步是在 ax.xml 中处理此事件。正如我已经写的那样,事件本身在activeX-explorer中正确列出,但我没有找到在x++中对此事件做出反应的方法。