处理ax 2009中的activeX-events

时间:2009-12-15 08:34:00

标签: c# events activex axapta

我有一个包含多个事件的activeX组件。在.net样张中调试这个dll,事件被引发并且可以被破坏点(这是一个字吗?;)) 通过regasm / codebase注册这个dll工作,我可以在表单上的ax中添加这个activeX。事件在ax中的activeX-explorer中列出。 但似乎我没有机会处理在ax中提出的事件。

使用另一个activeX(例如Microsoft Date和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-object的包装器,它本身不能集成在ax,afaik中。 “onEvent”是一个由com-object事件调用的函数,并触发“myDelegate”。这一切都运行正常,在visual studio中测试 - 事件可以在表单上处理,调用activeX-part。 最后一步是用ax处理这个事件。 正如我已经写过的那样,事件本身在activeX-explorer中正确列出,但是我没有找到一种方法来对x ++中的这个事件作出反应。

1 个答案:

答案 0 :(得分:0)

我假设您的ActiveX也是用.NET编写的。

在.NET中编写ActiveX控件时有几个好玩的东西。其中之一是您需要为ActiveX控件公开的事件提供单独的接口。当满足任何条件时,您还需要在控件中手动引发事件。

我回答了关于handling ActiveX events (written in C#) from Javascript的类似问题。也许看看我在那里发布的ActiveX结构。